配列のスライス パート1
CoddyのSwiftジャーニー「基礎」セクションの一部 — レッスン 73/86。
時には、配列全体ではなく、その一部だけが必要な場合があります。Swiftでは、範囲演算子を用いた配列スライシング(array slicing)を使用して、要素のサブセットを簡単に抽出できます。
スライスを取得するには、サブスクリプトの括弧内で範囲を使用します。最も一般的な手法では、開始インデックスを含み、終了インデックスを含まない半開範囲演算子(..<)を使用します:
let numbers = [10, 20, 30, 40, 50]
let slice = numbers[1..<4]
print(slice) // [20, 30, 40]ここでは、1..<4はインデックス1、2、3の要素を返しますが、インデックス4は含まれません。これは、どこで停止するかを正確に把握している場合に便利です。
終了インデックスを含めたい場合は、閉範囲演算子(...)を使用します:
let letters = ["a", "b", "c", "d", "e"]
let slice = letters[1...3]
print(slice) // ["b", "c", "d"]重要な詳細が1つあります:スライスの結果は、通常のArrayではなくArraySliceになります。本物の配列が必要な場合は、Array()でラップしてください:
let original = [1, 2, 3, 4, 5]
let sliced = Array(original[0..<3])
print(sliced) // [1, 2, 3]チャレンジ
簡単numbers、start、および end を受け取り、開始インデックスから終了インデックス(終了インデックスは含まない)までの配列のスライスを返す関数 getMiddleElements を作成してください。
半開範囲演算子 (..<) を使用して配列の指定された部分を抽出し、それを通常の配列として返します。
パラメータ:
numbers([Int]): スライスする配列start(Int): 開始インデックス(含める)end(Int): 終了インデックス(含めない)
戻り値: 開始インデックスから終了インデックス(終了インデックスは含まない)までの要素を含む配列 ([Int])
例: numbers が [10, 20, 30, 40, 50, 60]、start が 1、end が 4 の場合、関数は [20, 30, 40] を返す必要があります。
チートシート
Swiftでは、範囲演算子を使用した配列のスライシングによって、配列の一部を抽出することができます。
半開範囲演算子 (..<) を使用すると、開始インデックスから終了インデックスの直前まで(終了インデックスを含まない)をスライスできます:
let numbers = [10, 20, 30, 40, 50]
let slice = numbers[1..<4]
print(slice) // [20, 30, 40]終了インデックスを含めるには、閉範囲演算子 (...) を使用します:
let letters = ["a", "b", "c", "d", "e"]
let slice = letters[1...3]
print(slice) // ["b", "c", "d"]配列のスライシングは ArraySlice を返します。これを通常の Array に変換するには、Array() で囲みます:
let original = [1, 2, 3, 4, 5]
let sliced = Array(original[0..<3])
print(sliced) // [1, 2, 3]自分で試してみよう
func getMiddleElements(numbers: [Int], start: Int, end: Int) -> [Int] {
// ここにコードを書いてください
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。