この記事では「The Swift Programming Language」を1から読んだ感想とか発見を書いてみようと思います。
「The Swift Programming Language」とはSwiftの公式ドキュメントでiBooksや下ページで見る事ができます。
The Swift Programming Language: About Swift
読んだ所
今回は下のThe Basics
を読みました。
The Swift Programming Language: The Basics
発見・感想
Int関連
Int
は32ビット環境ではInt32
になって64ビット環境ではInt64
になるらしいです。
符号なしのUInt
も同様でした。
Int.max // → 9223372036854775807 Int64.max // → 9223372036854775807 Int32.max // → 2147483647
Int32
にInt32.max
より大きい値を入れたらちゃんとエラーになってくれました。
// Integer literal overflowa when stored into "Int32"エラーになる var int: Int32 = 2147483648
下のように2進数・8進数・16進数のリテラルも用意してありました。
print(0b10001) print(0o21) print(0x11)
あとは下のようなリテラルもあるようでした。
100e2 // → 100 x 10 ** 2 => 10000 1_000 // → 1000 0.000_1 // → 0.0001 0xFp2 // → 15 x 2 ** 2 => 60
typealias
typealias
はクラスのエイリアスを作ってくれます。
typealias MyInt = Int print(MyInt.max) // 9223372036854775807
Tuple
Tuple
は会社でも少し使ってますがとても便利です。
モック用のダミーデータを作りたいけどクラスを定義するのがめんどくさい時に使ってます。
.0
と.1
でアクセスできるのは初めて知りました。
let tuple = (1, "aaa") print(tuple.dynamicType) // (Int, String) print(tuple.0) // 1 print(tuple.1) // aaa
下のように名前付きTuple
も定義できます。
let tuple = (int: 1, str: "aaa") print(tuple.dynamicType) // (Int, String) print(tuple.0) print(tuple.1) print(tuple.int) print(tuple.str)
名前付きと名前なしは同じ型のようです。
下のように代入する事ができました。
var tuple = (int: 1, str: "aaa") tuple = (2, "aaa")
Tuple
の個々の値は下のようにも取り出せました。
メソッドの戻り値を複数持たせたい時に便利そうです。
let tuple = (2, "aaa") let (value0, value1) = tuple
全部の値を使わない場合は_
を使うと良さそうです。
let tuple = (1, 2, 3) let (value0, value1, _) = tuple
assert
assert
という機能もあるようです。
これはテストコードではなく通常のコード中に埋め込むようです。
assert
メソッド内の第一引数がfalse
になるとアプリが落ちます。
デバッグ時だけ有効なようで、releaseビルドではfalse
でも落ちませんでした。
let age = -3 assert(age >= 0, "A person's age cannot be less than zero")
変数名
Swiftでは変数名に全角文字が使えます。
let π = 3.14159 let 你好 = "你好世界" let 🐶🐮 = "dogcow" print(π) print(你好) print(🐶🐮)