コース: Objective-C 基本講座

Swiftとの比較

このレッスンではスウィフトによる 変数の扱いや関数クラスの定義法を紹介します まずC やObjectiveC では ファイル名に関係なくファイルに書かれた main 関数がエントリーポイントに なるのですがスウィフトでは main.swift という名前の ファイルがエントリーポイントになります ちなみにコマンドランカルの引数はプロセス という型から取り出せるようになっています またヘッダーファイルという考えもありません インポートはファイルの読み込みではなく 使うフレームワークの選択となります 変数宣言はvar キーワードを付けて 変数名そこにコロンをつけて 変数の型という文法です 値を代入する場合はそこから型を 推測できるので型指定はなくても構いません 例えば型指定なしに小数点がついた 数字リテラルを 代入したらダブル型となります let キーワードだと定数となります この場合後から値の変更ができません セミコロンが必要ないので かなりすっきりした見た目になっています 四則演算子や比較演算子などは ObjectC< /iと同じです これに加えオブジェクトの参照値を比較する 演算子があります 暗黙のキャストが行われません キャストは型名に続けてカッコを書き その中にキャストしたい変数を書きます 値を入れずに使おうとするとエラーになります if 文のカッコは省略可 ブレースは省略不可となっています どんな型の変数でも型の後ろに疑問符を つけると変数が有効かどうかnill と 比較して確認できるようになります このような変数をラップされた変数と呼び 値を利用するときは 後ろに感嘆符をつける必要があります これをアンラップと言います if let 文を使うとnill との 比較とアンラップの作業が同時にできます 有効な値だった場合let で宣言した変数に アンラップされた値が入り if 文が実行されます nill と比較できたうえで 感嘆符を省略したい場合は変数宣言値に 疑問符の代わりに感嘆符をつけます アンラップ済み変数と呼びこの場合 通常の変数と同じように書けますが nill でないことの補償は 各人でしなければなりません スイッチ文では ブレークで止める必要はありません 後ろのケースの前で終了します またデフォルトが必須です 処理が最低1つ必要なので もしデフォルトでやることがない場合は ブレーク文を使います 逆に下のケース処理に落としたい時だけ fallthrough キーワードを つけるようになっています 電磁演算子を使って ケース文で範囲指定ができます 配列はarray という構造体になります array に続けて アングルブラケットペア内に型を書くことで どのような型の配列かを指定できます array の型の別の書き方に ブラケットペアを使う方法もあります ブラケットペア内にカンマで値を並べることで 要素の値を指定できこれを代入するなら 型の指定は不要です let ではなくvar にすると 要素の追加や削除が行えます 配列はカウントという名前の プロパティを調べることで 要素数がわかるようになっています スウィフトでは文字列をストリング という名前の構造体で扱うようになっていて 文字列リテラルも 暗黙でストリング構造体として扱われます 連結や比較が簡単です バックスラッシュとカッコの中に 変数を入れることで文字列の中に 変数の値を埋め込めます 関数定義では最初にfunc をつけ 戻り値がある時だけカッコのマイナスと代内に 続けて戻り値の型を書くようになっています 引数をカンマで区切るのは同じですが 呼び出す時に仮引数名がラベルに利用されます 第1 引数だけはラベルがつきません 型に別名を付ける時は タイプエリアスを使います このようにif でも elseif つきで使えますが define を使った定義はできません 値はコンパイラに渡す パラメーターとして設定する必要があります スウィフトではクラス定義が インターフェース部と インプリメンテーション部にはわかれず クラスキーワードだけで一機に定義します クラス名の後ろにコロンをつけることで 派生元を指定できるのは同じです インスタンス変数プロパティの区別はなく すべてプロパティと呼ばれます メソッドの定義は関数と同じです func キーワードからはじめ仮引数間を カンマで区切る必要があります オーバーライドする時は オーバーライドキーワードを つける必要があります プロトコルの採用では派生元が優先です そのあとカンマで区切って プロトコルを書いていきます インスタンス作成はクラス名にカッコです 定数オブジェに入るのは 参照であり本体ではありません この点は同じですがアスタリスクはつけません 引数付きのイニシャライザー を使ったインスタンス作成の場合 第1 引数もラベルがつきます メッセージ送信は構造体の ポインター呼び出しのように書きます 第1 引数以外は 仮引数名がラベルとして使われます コロンをつけて値を続けます そしてカンマでの区切りが必要です enumstruct もメソッドを持てます スウィフトではstruct のメンバーも プロパティと呼びます このレッスンでは スウィフトによる変数の扱いや 関数、クラスの定義法を紹介しました

目次