summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAndre Polykanine A.K.A. Menelion Elensúlë <andre@oire.org>2015-03-05 14:07:04 +0200
committerAndre Polykanine A.K.A. Menelion Elensúlë <andre@oire.org>2015-03-05 14:07:04 +0200
commitfedf97e1054d18ce86d15facd89d5671979198fa (patch)
tree6597bf24fdd94c807f6efb22727af5bfa132c96e
parent303ec58a52cef60d8fdc13babe378f4a2e6117c3 (diff)
parent33cb96b265f2066e8a10c5a8bbd7caf2b96c3a87 (diff)
Merge pull request #984 from TheDmitry/swift-updating
[swift/ru] Updating Swift guide
-rw-r--r--ru-ru/swift-ru.html.markdown52
1 files changed, 52 insertions, 0 deletions
diff --git a/ru-ru/swift-ru.html.markdown b/ru-ru/swift-ru.html.markdown
index ab1b3434..77987bb3 100644
--- a/ru-ru/swift-ru.html.markdown
+++ b/ru-ru/swift-ru.html.markdown
@@ -3,6 +3,7 @@ language: swift
contributors:
- ["Grant Timmerman", "http://github.com/grant"]
- ["Christopher Bess", "http://github.com/cbess"]
+ - ["Joey Huang", "http://github.com/kamidox"]
filename: learnswift-ru.swift
translators:
- ["Dmitry Bessonov", "https://github.com/TheDmitry"]
@@ -402,6 +403,35 @@ if mySquare === mySquare {
println("Ага, это mySquare")
}
+// Опциональная инициализация (init)
+class Circle: Shape {
+ var radius: Int
+ override func getArea() -> Int {
+ return 3 * radius * radius
+ }
+
+ // Поместите постфиксный знак вопроса после `init` - это и будет опциональная инициализация,
+ // которая может вернуть nil
+ init?(radius: Int) {
+ self.radius = radius
+ super.init()
+
+ if radius <= 0 {
+ return nil
+ }
+ }
+}
+
+var myCircle = Circle(radius: 1)
+println(myCircle?.getArea()) // Optional(3)
+println(myCircle!.getArea()) // 3
+var myEmptyCircle = Circle(radius: -1)
+println(myEmptyCircle?.getArea()) // "nil"
+if let circle = myEmptyCircle {
+ // не будет выполняться, поскольку myEmptyCircle равен nil
+ println("circle не nil")
+}
+
//
// MARK: Перечисления
@@ -433,6 +463,28 @@ enum BookName: String {
}
println("Имя: \(BookName.John.rawValue)")
+// Перечисление (enum) со связанными значениями
+enum Furniture {
+ // Связать с типом Int
+ case Desk(height: Int)
+ // Связать с типами String и Int
+ case Chair(String, Int)
+
+ func description() -> String {
+ switch self {
+ case .Desk(let height):
+ return "Письменный стол высотой \(height) см."
+ case .Chair(let brand, let height):
+ return "Стул марки \(brand) высотой \(height) см."
+ }
+ }
+}
+
+var desk: Furniture = .Desk(height: 80)
+println(desk.description()) // "Письменный стол высотой 80 см."
+var chair = Furniture.Chair("Foo", 40)
+println(chair.description()) // "Стул марки Foo высотой 40 см."
+
//
// MARK: Протоколы