変数と定数
宣言方法
変数
- 値の変更が必要な場合
-
var
を使用
変数の宣言
var 変数名: 型名
変数の宣言
var a: Int
定数
- 値の変更が不要な場合
- 変更が想定されていない値を更新してしまうミスを防げる
-
let
を使用
定数の宣言
let 変数名: 型名
定数の宣言
let a: Int
型アノテーション(type annotation)
-
: 型名
の部分 - 変数/定数の型を明示的に決定する
型推論
- プログラムの文脈から暗黙的に型を決定
- 代入される値から型が推論できる場合は型アノテーションを省略可能
型は宣言時に決定する必要がある
- 型アノテーション
- 値の代入(初期化) → 型推論
型の確認方法
プログラミングによる確認
type(of:)
関数を利用
型の確認
type(of: 変数/定数名)
型の確認
let a = 123
type(of: a) // Int.Type
コーディング中の確認
XcodeのQuick Help機能を利用
- 変数/定数にカーソルを合わせて、
Control + Command + ?
- Quick Help Inspectorを表示して変数/定数にカーソルを合わせる
代入方法
代入可能な値
-
変数/定数の型と一致するもの
- 型アノテーションで指定した型
- 型推論により決定した型
-
代入元となるもの
- リテラル
- 他の変数/定数
- 式
- 演算子による演算結果
- 関数の返り値
初期化
初期化されていない変数/定数の使用はコンパイルエラー
→ コンパイル可能なプログラムには未初期化変数/定数へのアクセスは存在しない
定数には再代入できない
再代入できないが、初期化は必須ではない
- 代入が一度しか行われないことがコンパイラによって保証されていれば有効
定数の代入(OK)
let a: Int
let condition = true
if condition {
a = 1
} else {
a = 2
}
- 実際には代入が一度しか行われなくてもコンパイラが保証できない場合はコンパイルエラー
定数の代入(NG)
let a: Int
for index in [1] {
a = index
}