diff options
| author | TheDmitry <TheDmitry@users.noreply.github.com> | 2015-03-04 10:59:54 +0300 | 
|---|---|---|
| committer | TheDmitry <TheDmitry@users.noreply.github.com> | 2015-03-04 10:59:54 +0300 | 
| commit | 755f4bb1bdafcd36cf6f1a2d059258e88408d507 (patch) | |
| tree | 9be1207aa57964a54aee4ca2eaf048b85cd8fb0d | |
| parent | d2d3efead458aa0921862a3a5f413f47cabf432d (diff) | |
[swift/ru] Updating Swift guide
| -rw-r--r-- | ru-ru/swift-ru.html.markdown | 51 | 
1 files changed, 51 insertions, 0 deletions
| 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: Протоколы | 
