1
ルビーコーンをするときに私はこの質問を受けました。この配列を考える:なぜRuby Arrayのスライスでnilが返され、空の配列が返されるのでしょうか?
array = [1, 2, 3, 4]
は[]
に等しいです。ただし、array[5, 0]
はnil
になります。
4と5の両方がインデックス外です。なぜ彼らは別のものを返すのですか?
ルビーコーンをするときに私はこの質問を受けました。この配列を考える:なぜRuby Arrayのスライスでnilが返され、空の配列が返されるのでしょうか?
array = [1, 2, 3, 4]
は[]
に等しいです。ただし、array[5, 0]
はnil
になります。
4と5の両方がインデックス外です。なぜ彼らは別のものを返すのですか?
Array#slice(start,length)の最初のパラメータは、スライスを開始すべき指標間場所ある:
array = [1, 2, 3, 4]
# elements : [ 1 2 3 4 ]
# ↑ ↑ ↑ ↑ ↑
# slice start indices : 0 1 2 3 4
slice(0,_)
が開始4
の左側及びslice(4,_)
が最後の可能な場所で開始slice(3,_)
が始まる、1
の左:右4
。
slice(4,0)
はまだarray
の中にあります。空の配列の右は4
です。
slice(5,0)
は、array
の中にはもうありません。nil
です。