これは、配列の最後のインデックスを+1するのを防ぐための非常に徹底的な方法です。ルビーでこれを達成するためのベストプラクティスは何ですか?前もって感謝します。index + 1 to with with index
array.each.with_index do |x, index|
unless index+1 == array.length
if x + array[index+1] == n
...
これは、配列の最後のインデックスを+1するのを防ぐための非常に徹底的な方法です。ルビーでこれを達成するためのベストプラクティスは何ですか?前もって感謝します。index + 1 to with with index
array.each.with_index do |x, index|
unless index+1 == array.length
if x + array[index+1] == n
...
これを試してみてください:
array[0..-2].each.with_index do |x, index|
if x + array[index+1] == n
...
なぜ ' - 2'ですか? .... –
彼は配列の最後のインデックスにアクセスしたくないので、 – leobelizquierdo
ああ、doh;私の悪い。私自身のコメントには注意を払っていませんでした。私はある期間中断し、あなたのことを間違えた。わーい。 –
あなたがやりたい範囲を使用することができます。ような何か:
array = [0, 1, 2, 3, 4]
array[0...-1].each do |x|
print x
end
# =>
-1
は最後の要素を指し、3つのドット...
を使用すると、あなたが独占的に*最後に *を最初からすべての要素を取っていることを意味します。 2ドットには最後のドットも含まれます。
ボーナスのヒント:ルビーでは、の代わりにeach_with_index
の代わりに、あらかじめアレイを間引き/変更することで、ほとんどの時間を無くすことができます。
'[_... 1]'は最初から最後までであるため、 'array [_... 1]'(non-inclusive) 。 –