diff options
| -rw-r--r-- | ru-ru/swift-ru.html.markdown | 54 | 
1 files changed, 28 insertions, 26 deletions
| diff --git a/ru-ru/swift-ru.html.markdown b/ru-ru/swift-ru.html.markdown index 6a90b474..07164158 100644 --- a/ru-ru/swift-ru.html.markdown +++ b/ru-ru/swift-ru.html.markdown @@ -9,11 +9,11 @@ translators:  lang: ru-ru  --- -Swift - это язык программирования, созданный компанией Apple, для разработки -приложений iOS и OS X. Разработанный, чтобы сосуществовать с Objective-C и +Swift - это язык программирования, созданный компанией Apple, для приложений +под iOS и OS X. Разработанный, чтобы сосуществовать с Objective-C и  быть более устойчивым к ошибочному коду, Swift был представлен в 2014 году на  конференции разработчиков Apple, WWDC. Приложения на Swift собираются -с помощью LLVM компилятора, включенного в Xcode 6+. +с помощью LLVM-компилятора, включенного в Xcode 6+.  Официальная книга по [языку программирования Swift](https://itunes.apple.com/us/book/swift-programming-language/id881256329) от Apple доступна в iBooks. @@ -27,7 +27,7 @@ import UIKit  // MARK: Основы  // -// Xcode поддерживает заметные маркеры, чтобы давать примечания свою коду +// Xcode поддерживает маркеры, чтобы давать примечания своему коду  // и вносить их в список обозревателя (Jump Bar)  // MARK: Метка раздела  // TODO: Сделайте что-нибудь вскоре @@ -44,7 +44,7 @@ let π = 3.1415926  let convenience = "Ключевое слово" // контекстное имя переменной  let weak = "Ключевое слово"; let override = "еще ключевое слово" // операторы                                        // могут быть отделены точкой с запятой -let `class` = "Ключевое слово" // одинарные кавычки позволяют использовать +let `class` = "Ключевое слово" // обратные апострофы позволяют использовать                                 // ключевые слова в именовании переменных  let explicitDouble: Double = 70  let intValue = 0007 // 7 @@ -63,17 +63,17 @@ let piText = "Pi = \(π), Pi 2 = \(π * 2)" // Вставка переменны  println("Значение сборки: \(buildValue)") // Значение сборки: 7  /* -    Optional - это особенность языка Swift, которая допускает вам сохранять +    Опционалы - это особенность языка Swift, которая допускает вам сохранять      `некоторое` или `никакое` значения.      Язык Swift требует, чтобы каждое свойство имело значение, поэтому даже nil -    должен явно сохранен как Optional значение. +    должен быть явно сохранен как опциональное значение.      Optional<T> является перечислением.  */ -var someOptionalString: String? = "optional" // Может быть nil -// как и выше, только ? это постфиксный оператор (синтаксический сахар) -var someOptionalString2: Optional<String> = "optional" +var someOptionalString: String? = "опционал" // Может быть nil +// как и выше, только ? - это постфиксный оператор (синтаксический сахар) +var someOptionalString2: Optional<String> = "опционал"  if someOptionalString != nil {      // я не nil @@ -85,9 +85,9 @@ if someOptionalString != nil {  }  someOptionalString = nil -// неявная развертка переменной Optional +// неявная развертка опциональной переменной  var unwrappedString: String! = "Ожидаемое значение." -// как и выше, только ! постфиксный оператор (с еще одним синтаксическим сахаром) +// как и выше, только ! - постфиксный оператор (с еще одним синтаксическим сахаром)  var unwrappedString2: ImplicitlyUnwrappedOptional<String> = "Ожидаемое значение."  if let someOptionalStringConstant = someOptionalString { @@ -97,7 +97,7 @@ if let someOptionalStringConstant = someOptionalString {      }  } -// Swift поддерживает сохранение значение любого типа +// Swift поддерживает сохранение значения любого типа  // AnyObject == id  // В отличие от `id` в Objective-C, AnyObject работает с любым значением (Class,  // Int, struct и т.д.) @@ -119,7 +119,7 @@ anyObjectVar = "Изменять значение на строку не явл  /*      Массив (Array) и словарь (Dictionary) являются структурами (struct). Так      `let` и `var` также означают, что они изменяются (var) или не изменяются (let) -    при объявлении типов. +    при объявлении переменных этих типов.  */  // Массив @@ -187,12 +187,12 @@ let vegetable = "красный перец"  switch vegetable {  case "сельдерей":      let vegetableComment = "Добавьте немного изюма, имитируя муравьев на бревнышке." -case "огурец", "жеруха": +case "огурец", "кресс-салат":      let vegetableComment = "Было бы неплохо сделать бутерброд с чаем."  case let localScopeValue where localScopeValue.hasSuffix("перец"):      let vegetableComment = "Это острый \(localScopeValue)?" -default: // обязательный (чтобы преодолеть все возможные вхождения) -    let vegetableComment = "Все вкусы хороши для супа." +default: // обязательный (чтобы предусмотреть все возможные вхождения) +    let vegetableComment = "В супе все овощи вкусные."  } @@ -208,8 +208,8 @@ default: // обязательный (чтобы преодолеть все в  /**      Операция приветствия -    - Жирная метка в документировании -    - Еще одна жирная метка в документации +    - Маркер в документировании +    - Еще один маркер в документации      :param: name - это имя      :param: day - это день @@ -289,7 +289,7 @@ numbers = numbers.map({ number in 3 * number })  print(numbers) // [3, 6, 18] -// Упрощение замыкания +// Хвостовое замыкание  numbers = sorted(numbers) { $0 > $1 }  print(numbers) // [18, 6, 3] @@ -367,7 +367,7 @@ internal class Rect: Shape {      init(sideLength: Int) {          self.sideLength = sideLength -        // всегда вызывается super.init последним, когда init с параметрами +        // последним всегда вызывается super.init, когда init с параметрами          super.init()      } @@ -397,7 +397,7 @@ print(mySquare.sideLength) // 4  // преобразование объектов  let aShape = mySquare as Shape -// сравнение объектов, но не как операция ==, которая проверяет эквивалентность +// сравнение экземпляров, в отличие от ==, которая проверяет эквивалентность  if mySquare === mySquare {      println("Ага, это mySquare")  } @@ -422,14 +422,14 @@ enum Suit {      }  } -// Значения перечислений допускают жесткий синтаксис, нет необходимости +// Значения перечислений допускают сокращенный синтаксис, нет необходимости  // указывать тип перечисления, когда переменная объявляется явно  var suitValue: Suit = .Hearts  // Нецелочисленные перечисления требуют прямого указания значений  enum BookName: String { -    case John = "John" -    case Luke = "Luke" +    case John = "Иоанн" +    case Luke = "Лука"  }  println("Имя: \(BookName.John.rawValue)") @@ -459,7 +459,9 @@ class MyShape: Rect {      func grow() {          sideLength += 2 -         +        // Размещайте знак вопроса перед опционным свойством, методом +        // или индексом, чтобы не учитывать nil-значение и возвратить nil +        // вместо выбрасывания ошибки выполнения (т.н. "опционная цепочка")          if let allow = self.delegate?.canReshape?() {              // проверка делегата на выполнение метода              self.delegate?.reshaped?() | 
