LoginSignup
5
3

More than 5 years have passed since last update.

[Swift]変数と定数

Posted at

変数と定数

宣言方法

変数

  • 値の変更が必要な場合
  • 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
}
5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3