The Basics

雑誌名ではない。

Swift LANGUAGE GUIDE の The Basics https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html を読んだ。英語を読むのはしんどい。Google翻訳が有る時代でよかった。

新たに得た知見

  • Type Annotation … コロン … : 〜 は "… of type 〜" と読む
  • 「実際にType Annotationを記述する必要はほとんどない」…まじですか
  • let 🐶🐮 = "dogcow"
  • 予約語と同じ名前を使うときはバッククオートで囲む let `false` = true
  • print(_:separator:terminator:) 関数で改行させないときは print(x, terminator: "")
  • 複数行コメント /**/ はネストできる
  • 複数ステートメントを1行に記述する場合はセミコロン区切り let cat = "🐱"; print(cat)
  • Int.bitWidth は 32bit OSでは32
  • 「プラットフォームネイティブな語のサイズと同じサイズの符号なし整数型が特に必要な場合にのみ、UIntを使用する。これが当てはまらない場合、格納される値が非負であることが分かっている場合でも、Intが好ましい」
  • FloatDouble…「使用する適切な浮動小数点型は、コードで扱う必要がある値の性質と範囲によって異なる。どっちでもいい場合はDoubleが好ましい」
  • 二項数値昇格は無い様子 let pi = Int(3) + Double(0.14159) →エラー
  • 数値リテラルでは読みやすさのために、余分な0やアンダースコアを含められる let paddedDouble = 000123.456 let oneMillion = 1_000_000
  • 16進数で浮動小数点数 let hexadecimalDouble = 0xFp-2
  • Type Alias typealias AudioSample = UInt16
  • 要素名つきのタプル let http200Status = (statusCode: 200, description: "OK")
  • タプルは一時的でなければ classstruct を使うべき
  • 強制アンラップの ! の意味は「このオプショナルには間違いなく値が存在するので使わせて」
  • 暗黙のアンラップ let assumedString: String! = "〜"
  • assert() は debug build のとき検査される。production buildでは検査されない。 precondition() ならproduction buildでも検査される
  • precondition() はunchecked mode (-Ounchecked) では 検査されない。 fatalError() なら検査される