From 755f4bb1bdafcd36cf6f1a2d059258e88408d507 Mon Sep 17 00:00:00 2001 From: TheDmitry Date: Wed, 4 Mar 2015 10:59:54 +0300 Subject: [swift/ru] Updating Swift guide --- ru-ru/swift-ru.html.markdown | 51 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) (limited to 'ru-ru') diff --git a/ru-ru/swift-ru.html.markdown b/ru-ru/swift-ru.html.markdown index ab1b3434..3d2bd22f 100644 --- a/ru-ru/swift-ru.html.markdown +++ b/ru-ru/swift-ru.html.markdown @@ -402,6 +402,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 +462,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: Протоколы -- cgit v1.2.3 From 979aa455585b75a6d392b3eb08b2f0566390eba4 Mon Sep 17 00:00:00 2001 From: TheDmitry Date: Wed, 4 Mar 2015 11:07:48 +0300 Subject: [swift/ru] Added contributor --- ru-ru/swift-ru.html.markdown | 1 + 1 file changed, 1 insertion(+) (limited to 'ru-ru') diff --git a/ru-ru/swift-ru.html.markdown b/ru-ru/swift-ru.html.markdown index 3d2bd22f..bcb22c2f 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"] -- cgit v1.2.3 From 33cb96b265f2066e8a10c5a8bbd7caf2b96c3a87 Mon Sep 17 00:00:00 2001 From: TheDmitry Date: Thu, 5 Mar 2015 10:33:48 +0300 Subject: [swift/ru] Typo --- ru-ru/swift-ru.html.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'ru-ru') diff --git a/ru-ru/swift-ru.html.markdown b/ru-ru/swift-ru.html.markdown index bcb22c2f..77987bb3 100644 --- a/ru-ru/swift-ru.html.markdown +++ b/ru-ru/swift-ru.html.markdown @@ -428,7 +428,7 @@ println(myCircle!.getArea()) // 3 var myEmptyCircle = Circle(radius: -1) println(myEmptyCircle?.getArea()) // "nil" if let circle = myEmptyCircle { - // не будет выполняться поскольку myEmptyCircle равен nil + // не будет выполняться, поскольку myEmptyCircle равен nil println("circle не nil") } @@ -475,7 +475,7 @@ enum Furniture { case .Desk(let height): return "Письменный стол высотой \(height) см." case .Chair(let brand, let height): - return "Стул бренда \(brand) высотой \(height) см." + return "Стул марки \(brand) высотой \(height) см." } } } @@ -483,7 +483,7 @@ enum Furniture { var desk: Furniture = .Desk(height: 80) println(desk.description()) // "Письменный стол высотой 80 см." var chair = Furniture.Chair("Foo", 40) -println(chair.description()) // "Стул бренда Foo высотой 40 см." +println(chair.description()) // "Стул марки Foo высотой 40 см." // -- cgit v1.2.3