戌咬音かんぬき(inugaminé)'s avatar

戌咬音かんぬき(inugaminé)

プログラミングの文脈では、単に「変数」という言葉で定数も含めて指すこともある (主に厳密に言い分ける必要がないとき)。

Swift では下記のキーワードを使用して定数や変数を作成する:

  • 定数を作成する: let
  • 変数を作成する: var

変数 (Variable) - var

何度でも値を変更できる箱。

var currentLoginAttempt = 0
currentLoginAttempt = 1  // OK! 変更できる
currentLoginAttempt = 2  // これもOK

いつ使う?

  • 変わる値 (カウンター、スコア、状態など)
  • ループの中で更新する値
  • ユーザー入力で変わる値

定数 (Constant) - let

一度値を設定したら変更できない箱。

let maxLoginAttempts = 10
maxLoginAttempts = 15  // エラー! 変更できない

Swift では、定数の値は必ずしもコンパイル時に設定されている必要はないが、正確に一度だけ値を設定する必要がある。
値の指定をたった一度だけ行い、他のあらゆる場所からその定数を利用できる。

// 実行時に値が決まっても OK
let userInput = readLine()  // ユーザーの入力を受け取る (実行時に決まる)

// ただし、一度決めたら変更不可
userInput = "別の値"  // エラー!

いつ使う?

  • 変わらない値 (設定値、固定の上限など)
  • 一度決めたら変えるべきではない値
  • 「このIDは絶対変えない」のような時

メリット:

  • 安全: 間違って値を変えてしまう心配がない
  • 意図が明確: 「これは変えないよ」と宣言しているのが分かる

使い分けの基本ルール

迷ったら let を使う

理由:

  • 安全性が高い
  • バグが減る

→ 後で変更したいと思ったら var に変えればいい。

let userName = "Ken"      // 名前は変わらない → let
var score = 0             // スコアは変わる → var
let maxScore = 100        // 最大スコアは固定 → let
キーワード種類変更使いどころ
let定数不可変わらない値、安全に使いたい値
var変数可能変わる値、更新が必要な値