# 結論
subscript
を使ってArray
に下記のようなextensionをはやしておくと便利です。戻り値がArraySlice<Element>?
になることで、範囲外を取り出そうとした場合でもnil回避ができます。
extension Array { subscript(safe range: Range<Index>) -> ArraySlice<Element>? { if range.endIndex > endIndex { return range.startIndex >= endIndex ? nil : self[range.startIndex..<endIndex] } else { return self[range] } } }
ちなみに、使い方はこんな感じ。
array[safe: 0..<2]
てな感じで本日も以上となります🍺