キャスト

違う方同士での計算をする際や、違う型に代入をしようとした際にはキャストというものが必要になります。

型の異なる代入

  var aVal:Flowt = 10.1
  var bVal:Double = aVal <- 型が違うのでエラーになる

C言語などでは通ってしまいそうなFloatからDoubleへの代入です。同じ少数型であってもSwiftは暗黙的な型変換は行いませんこのような場合プログラマが型を変換してあげなければなりません。

  var aVal:Flowt = 10.1
  var bVal:Double = Double(aVal)

これでエラーなく値を代入することができます。基本的には上記の例のように型名の後に()で括った式を記述します。しかし変換ができない値などを無理やりキャストするとエラーが発生します。

Note

キャストに際にしていするDouble()やInt()ですが、これは型変換をするための関数ではなくDouble型やInt型のインスタンスを作るためのイニシャライザ(コンストラクタ)です。イニシャライザについては構造体やクラスの説明の部分で詳しく解説します

as演算子

オプショナルと言う機能とasと言う演算子を用いてもキャストを行うことができます。

※少し難しくなってしまうのでわからなければ読み飛ばしてください。

定数numは整数型の値と少数型の値を保持しています。numの中の整数だけを足し合わせた値を求めたい場合は下記のようなコードで判定を行います。

let num : [Any] = [1, 2, 3.35, 4.4, 5]
var seisuu = 10

for n in numbers {
	if let int = n as? Int {
		total += n
	}
}