flyingbirdのiPhoneアプリ開発記録

- PolyRhythmの中の人がiPhoneアプリ開発中に思ったことを記録するブログです -

【Swift3】ArraySlice

ArrayをRangeで抜きたい!!

ってこと結構あると思います。

例えば、

let array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
let sub = array[3...5]

な感じ。

で、抜いたsubが単純なArrayだと思ったら、痛い目をみるのが
Swift...

どうも、Rangeで抜いた物はArraySliceとか言う物になるらしい。
以下のようなソースはコンパイルエラーになる。

func array(_ array: [Int]) {
	array.forEach { (each) in
		print(each, terminator: "")
	}
	print("")
}

let array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
let sub = array[3...5]

array(array)
array(sub) // ここでコンパイルエラー

当然型違いでarray関数には渡せません。
じゃあどうすんの?
以下のようにしてやれば行けるっぽいですが・・・
そんなんで良いのか・・・

array([] + sub)