配列のスライス
CoddyのGDScriptジャーニー「基礎」セクションの一部。レッスン 73/92。
slice() メソッドは、要素の一部を含む新しい配列を返します。slice(begin, end) は、インデックス begin からインデックス end の直前までの要素を取得します。
var numbers := [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(numbers.slice(2, 6))[2, 3, 4, 5]endを指定しない場合、スライスは配列の末尾まで続きます:
print(numbers.slice(5))[5, 6, 7, 8, 9]負のインデックスは末尾から数えます。slice(-3) は最後の3つの要素を取得し、slice(0, -2) は最後の2つを除いたすべての要素を取得します。
print(numbers.slice(-3))
print(numbers.slice(0, -2))[7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7]3つ目の引数であるステップは、n個おきの要素を取得します。slice(1, 8, 2)はインデックス1、3、5、7の要素を取得します。
print(numbers.slice(1, 8, 2))[1, 3, 5, 7]slice()は元の配列を変更しません。numbersには引き続き10個すべての要素が格納されています。
チャレンジ
簡単プログラムは、カンマ区切りの項目の行を配列 items に読み込みます(すでに記述済みです)。slice() を使って配列の中央部分を出力してください。
- 項目数が奇数の場合は、中央の項目とその両側の項目を1つずつ出力します(3項目。項目が1つだけの場合は、その項目を出力します)
- 偶数の場合は、中央の2項目を出力します
apple,banana,orange,grape の場合、出力は ["banana", "orange"] となり、a,b,c,d,e の場合は ["b", "c", "d"] となります。
自分で試してみよう
extends Node
func _ready():
var items := OS.read_string_from_stdin().split(",")
# 中央の要素を出力する
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: GDScriptオンラインコンパイラ