前回に引き続き、タプルについて説明していきます。
キーワード付きタプル
タプルの要素1つ1つにキーワードをつけることができます。JsonやDictionaryのような感じです。キーワードをつけることで、その値が何を表しているのかがわかりやすくなるのでとても便利です。
let image = (file:"image.png", width:320, height:400)
タプルの要素を取り出すときは、前回説明したようにインデックスの番号を指定してもOKですし、キーワードでの指定もできます。
let image = (file:"image.png", width:320, height:400)
print(image.0) //image.png
print(image.file) //image.png
キーワード付きタプルの代入操作
キーワード付きのタプルの代入は、同じキーワードかキーワードがないタプルからしかできません。
let image1 = ("image.png", 320, 400)
let image2 = (file:"image.png", width:320, height:400)
let image3 = (fileName:"image.png", sizeWidth:320, sizeHeight:400)
var imageA : (String, Int, Int) = image1 //OK!
var imageB : (file: String, width: Int, height: Int) = image1 //OK!
imageA = image2 //OK!
imageB = image2 //OK!
var imageC : (String, Int, Int) = image1 //OK!
imageB = image3 //NG
imageC = image3 //OK!
メソッドの返り値でキーワード付きタプルを使用する
もちろん、キーワード付きタプルもメソッドの返り値に使用できます。
func getImageSize(file: String) -> (width: Int, height: Int) {
...
}
let imageSize = getImageSize("image.png")
print("幅:\(imageSize.width) 高さ:\(imageSize.height)")
タプルをswitch文で使用する
switch文の引数としてもタプルを使用できます。書き方は以下のようになります。
// value は(Int, Int) というようなタプルとします。
switch value {
case (0,0): ...
case (0,1): ...
case (0,2): ...
case (1,0): ...
default: break
}
コメント