func fifth<C: Collection>(_ c: C) -> C.Element? { return c[.first + 4] } let array = [1,2,3,4,5,6,7,8,9] print(fifth(array)!) // 5 print(fifth(array[2...])!) // 7
fifth
の中身では .first + 4
という形で 「4番目」と書いてるけど、array
でも array[2...]
でも、「4番目」が得られてる。ArraySlice
を 0スタートにすると Slice
にならなくなる。 ArraySliceがSliceでありながら0スタートになるようにすると、 StringのSliceが作れなくなる。