文法

Swift3対応で書き換えたところ

しばらく放置している間にSwift3にバージョンアップしてしまい、またもやコードが動かなくなったので、初めのほうからちまちま直していきました。

一部記事を最新の内容に更新しています。

カレンダー関連

システム関連ほか

ここでは上記以外についてまとめておきます。

インクリメント演算子とデクリメント演算子

++とが廃止になりました。いろいろな言語で扱えたり扱えなかったりするんですが、簡潔に表現できるので好んで使ってたんですけどね。

代替表現として+=1または-=1を使用します。これらの演算子は変数の値を直接+1または-1する操作で、等価式をまとめると以下のようになります。

Swift2まで有効Swift3で有効等価式意味
var_name++var_name+=1var_name=var_name+1var_nameの値に1加算して再代入
var_namevar_name-=1var_name=var_name-1var_nameの値に1減算して再代入

まあ++やが1ずつしか加減算できないのに対して+=や-=は加減算する値を自由に指定できるだとか、乗除算などと表現が統一できるのでそういう意味ではメリットありますね。

forループ

多くの言語で使われている(というほど知らないけど)forループの表現が使えなくなりました。

Swift2まで)
for (counter = 初期値; counter < 上限値; counter++) {繰り返し処理}
Swift3より)
for counter in 初期値..<上限値 {繰り返し処理}
for counter in 初期値…上限値 {繰り返し処理}

Swift3以降で使える表現では、繰り返し条件の上限値判定に不等号があるものは上限値未満、不等号のないものが上限値を含む条件となります。

ちなみにもともとfor in構文は値の羅列に対応しているため、1刻み以外や数式で表現できない数列、そもそも数値以外の条件について繰り返し指示ができます。

例)
for counter in 5,3,8,0,2 {繰り返し処理}

また、単純に繰り返し回数のみ設定したいような場合(カウンタ用変数が繰り返し処理内に現れない)、仮の変数名として_を使うことができます。これを使用することで、定義した変数が使用されていない旨の警告を回避することができます。

使用例)
for _ in 0..<5 {繰り返し処理}

この辺、慣れればそんなもんって感じになるのかな。