プログラミング入門⑥ 型

プログラムの「型」とは

 ここまでのプログラムでは、変数や定数に「りんご」「バナナ」などのような文字列(文字の値)を代入したり、参照したりしていました。プログラムではもちろん、文字列だけを扱うわけではありません。

 例えば、商品の値段には「100」「200」といった「整数」の値を使います。このような値の種類のことを「型」と呼びます。

 それでは、Swiftで使う基本的な型を見ていきましょう。

文字列型(String型)

 文字列型は、これまで扱ってきたような文字を扱う型です。Swiftでは「String(ストリング)型」と呼びます。アプリの画面上に表示するメッセージなどに使います。

let メッセージ = "こんにちは"
整数型(Int型)

 整数型は、整数のみを扱う型です。Swiftでは「Int(イント)型」と呼びます。商品の値段やゲームのスコア(点数)などに使います。ちなみに、Intは整数を表す英単語「Integer(インテジャー)」が省略されたものです。

let 価格 = 100
浮動小数点数型(Double型、Float型)

 浮動小数点型は、小数点を含む数を扱う型です。Swiftでは「Double(ダブル)型」「Float(フロート)型」と呼びます(2つの型は入れることのできる最小値・最大値が異なります)。地図の座標(緯度、経度)や温度などのような、小数点が含まれる細かい数に使います。

let 緯度 = 35.697239
let 円周率 = 3.14159
ブーリアン型(Bool型)

 ブーリアン型は、真か偽のどちらかを扱う型で、「フラグ」や「2値」などとも呼びます。Swiftでは「Bool(ブール)型」と呼び、「true」または「false」のどちらかの値しか代入することができません。スイッチのオン/オフのような「2つのうちのどちらか」という状態を表現したいときに使います。ちなみに、Boolは英単語「Boolean(ブーリアン)」が省略されたものです。

let 今日の天気は晴れ = true
let 今日の天気は雨 = false
型を「指定」するには?

 Swiftでは、定数(変数)を宣言するときに必ず型を指定しなければいけません。まずは、次のプログラムを書いてみましょう。

let あいさつ: String = "こんにちは"

定数の宣言時の型の指定
 このように、型を指定するには定数(変数)の名前の後に続けて「: 型の名前」を書きます。上記で紹介した型を使うのであれば、「: Int」や「: Bool」などといったように書きます。

let 所持金: Int = 10000
let 今日の天気は晴れ: Bool = true
値の種類を自動で判断してくれる「型推論」

 さて、ここで一つ疑問が出てきます。なぜ今までは「: String」を書いていないのに、文字列(つまりString型の値)と判断されていたのでしょうか? その理由は、定数(変数)の宣言と同時にString型の値を代入しているからです。

let くだもの = "りんご"
 上記のプログラムでは、定数の宣言と同時に「りんご」という文字列を代入しています。そのため、Playground(Xcode)が「文字列が代入されているから、この定数をおそらくString型として使いたいんだな」と自動で判断してくれます。

型推論
 このように、プログラムの文脈から型を推測してくれる機能のことを「型推論」と言います。型推論は、String型だけではなく、全ての型で有効です。

 型の指定は宣言時のみ可能で、後から変更することはできません。また、型が指定された定数(変数)に対して異なる型の値は代入できません。例えば、次のプログラムはDouble型の変数にString型の値を代入しようとしているため、エラーが発生します。

var 気温 = 24.5
気温 = "24度5分"

型が異なる場合のエラー
 これはつまり、どのような状況でも定数(変数)は宣言されたときに決まった型として扱われるということです。

「\( )」で文字列に値を混ぜる

 いくつかの型を見てきましたが、これらの型の値は文字列に混ぜて、1つの文字列にすることができます。まずは、次のプログラムを書いてみましょう。

let 値段 = 100
println("イチゴは\(値段)円です")
※「\」は、「alt」キーを押しながら「\」キーを押すと入力できます。

 結果画面を見てみると、「イチゴは100円です」と表示されていると思います。これは、「値段」の値が「イチゴは~円です」という文字の中に混ざり込んだからです。このように、文字列(つまりString型の値)の中に「\(値)」を含めることで、1つの文字列にすることができます。