定数と変数は、数値 10 や文字列 "Hello" のような特定の型の値を、maximumNumberOfLoginAttempts や welcomeMessage のような名前に結び付けます。定数は、値を設定した後に変更することはできません。変数は、値をいつでも変更できます。

定数と変数の宣言

定数と変数は、使用する前に宣言しておく必要があります。let キーワードで定数を宣言し、var キーワードで変数を宣言します。ユーザによるログイン試行回数を扱うための定数と変数の例です。

let maximumNumberOfLoginAttempts = 10
var currentLoginAttempt = 0

このコードは、「maximumNumberOfLoginAttempts と呼ぶ新しい定数を宣言し、値を 10 とします。次に、currentLoginAttempt と呼ぶ新しい変数を宣言し、初期値を 0 とします。」と読むことができます。

この例では、ログイン試行回数の最大値が定数として宣言されていますが、その最大値を変更することがないためです。現在のログイン試行回数は変数として宣言されていますが、ログインに失敗するたびにこの値を増加させるためです。

複数の定数や変数を 1 行で宣言することも可能で、カンマで区切ります。

var x = 0.0, y = 0.0, z = 0.0
NOTE
変更することがない値は、常に定数として let キーワードで宣言します。変更できるようにしておく必要がある値についてのみ、変数を用います。

タイプアノテーション(型注釈)

定数や変数を宣言するときに、タイプアノテーションで定数や変数が保存できる値の種類を明らかにすることができます。タイプアノテーションは、定数名や変数名の後にコロンを置き、スペースをあけてから、型の名前を記述します。

この例は、welcomeMessage 変数が String の値を保存できることを示すタイプアノテーションです。

var welcomeMessage: String

コロンは「〜型の〜」を意味し、このコードは「String型の変数 welcomeMessage を宣言する」と読むことができます。

String 型の」というフレーズは、「String の値を保存できる」ことを意味します。

この時点で、welcomeMessage 変数には、エラーになることなく、どんな文字列でも設定できるようになっています。

welcomeMessage = "Hello"

複数の同じ型の変数を 1 行で宣言することも可能で、カンマで区切り、最後の変数名の後にタイプアノテーションを記述します。

var red, green, blue: Double
NOTE
実際には、タイプアノテーションを書く必要はあまりありません。定数や変数に初期値を定義していると、Type Safety and Type Inference で解説しているように、Swift は型を推論することができます。上記 welcomeMessage の例では、初期値が無いため、変数の型がタイプアノテーションで指定されています。

定数と変数のネーミング

定数名と変数名には、Unicode の文字を含め、ほとんどの文字を使うことができます。

let π = 3.14159
let 你好 = "你好世界"
let 🐶🐮 = "dogcow"

定数名と変数名には、空白文字、数学記号、矢印、Unicode の私用文字 (private-use or invalid) や罫線文字を使うことはできません。また、数値を使うことはできますが、数値で始まる名前にすることはできません。

ある型で定数または変数を宣言すると、同じ名前で宣言しなおすことはできず、異なる型の値を保存するように変更することもできません。また、定数を変数に変更することも、変数を定数に変更することもできません。

NOTE
定数または変数に Swift の予約語と同じ名前を付ける必要がある場合には、利用するたびに名前をバッククオート (`) で囲みます。しかしながら、他に選択肢がまったく無いような場合を除いては、予約語と同じ名前を付けることは避けましょう。

変数の値を、適合する型の異なる値に変更することができます。この例では、friendlyWelcome の値が "Hello!"から "Bonjour!" に変更されています。

var friendlyWelcome = "Hello!"
friendlyWelcome = "Bonjour!"
// friendlyWelcome の現在値は "Bonjour!"

変数と異なり、定数の値は設定後に変更することはできません。変更しようとするとコードのコンパイル時にエラーが報告されます。

let languageName = "Swift"
languageName = "Swift++"
// コンパイル時エラー - languageName は変更できない

定数と変数の出力

定数または変数の現在値を print(_:separator:terminator:) 関数で出力できます。

print(friendlyWelcome)
// "Bonjour!" と出力

この print(_:separator:terminator:) 関数はグローバル関数で、しかるべき出力先に 1 つ以上の値を出力します。例として Xcode では、print(_:separator:terminator:) 関数は “console” ペインに出力します。パラメータの separatorと terminator にはデフォルト値があり、省略して関数を呼び出すことができます。デフォルトでは、行末ごとに改行して出力します。改行せずに値を出力するには、print(someValue, terminator: "") のようにして、終端文字 (terminator) に空文字列を渡します。パラメータのデフォルト値についての情報は、Default Parameter Values で確認してください。

Swift は、長い文字列にプレースホルダとして定数または変数の名前を含める文字列補間 (string interpolation) を利用して、定数または変数の現在値で置き換えるように動作します。名前を丸括弧で囲み、括弧開き(始め括弧)の前にバックスラッシュを置いてエスケープします。

print("The current value of friendlyWelcome is \(friendlyWelcome)")
// "The current value of friendlyWelcome is Bonjour!" と出力
NOTE
文字列補間で利用できるオプションは、String Interpolation で説明されています。

Portions of this page are translations based on work created and shared by Apple and used according to terms described in the Creative Commons Attribution 4.0 International License.