Swiftいろいろ: [2] beta 3での変更点
iOS8/OS X Yosemite/Xcode6のbeta3が公開された。この中でSwiftの言語仕様もかなり大胆に変更されている。
(これに伴ってiBooks版のThe Swift Programming Languageも改訂されている。)
・配列が完全な値型として振る舞うようになった
ネタにするつもりだったのだが、beta2までのSwiftの配列型は「値型なのにletで宣言しても要素の数を帰るような操作をしない限り、ここの要素の値は変更出来ます」なんて中途半端なものだった。(実装の中身を考えれば十分理解出来る仕様では有るのだが。)
これが文字列やなんかと同じく、完全な値型として振る舞うようになった
・これに伴って
(どうせなら、
だったらってことで当然のように
・半開範囲演算子が
範囲演算子についても、これまたネタにする予定だったので、beta3での挙動を確認し直さないといけないや。
後は細かな変更がゴソゴソ。
(これに伴ってiBooks版のThe Swift Programming Languageも改訂されている。)
・配列が完全な値型として振る舞うようになった
ネタにするつもりだったのだが、beta2までのSwiftの配列型は「値型なのにletで宣言しても要素の数を帰るような操作をしない限り、ここの要素の値は変更出来ます」なんて中途半端なものだった。(実装の中身を考えれば十分理解出来る仕様では有るのだが。)
これが文字列やなんかと同じく、完全な値型として振る舞うようになった
・これに伴って
Array<:T>
のの略記法がT[]
から[T]
になった。[Int]
なんて書かれると、ぱっと見、インデックス用のサブスクリプトがInt
型だと宣言したみたいに思えたのだが、リテラル表記と合わせると、(1,2)
の型は(Int,Int)
で、[1,2]
の型は[Int]
と整合性が出て来る。(どうせなら、
[Int...]
と書けても良かったような気がするのだが、Swiftには可変長引数はあってもunfolding演算子はなかったか。入れてくれても良いと思うぞ。)だったらってことで当然のように
Dictionary<KeyType,ValueType>
は[KeyType:ValueType]
と表記出来るようになった。これも["A":1,"b":2]
の型は[String:Int]
ってわけ。・半開範囲演算子が
..
から..<
へ..
と...
では紛らわしいから、ってことらしい。Rubyistからの抵抗もあったのかもしれない。範囲演算子についても、これまたネタにする予定だったので、beta3での挙動を確認し直さないといけないや。
後は細かな変更がゴソゴソ。
nil
関連は実際に微妙な挙動をプログラミングしていた人には影響が大きいんだが、普通のプログラムでは全然違いがわからんと言う…。とりあえず、Playgroundがもうちょっと安定してくれると嬉しいのだが。またじっくり遊んでみるか。