プログラミング入門⑥ 型
プログラムの「型」とは
ここまでのプログラムでは、変数や定数に「りんご」「バナナ」などのような文字列(文字の値)を代入したり、参照したりしていました。プログラムではもちろん、文字列だけを扱うわけではありません。
例えば、商品の値段には「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つの文字列にすることができます。