2017-02-27 10 views
-3

私はこの機能を持っています。インデックス出力が期待される出力のに対し、5です.......Rubyのメソッドに配列を渡すことができません

5 
1 
2 
3 
4 
5 

エラー ::

array = Array.new 

def put_array(array) 
    l = array.index(array[-1]) 
    puts l 
    for i in 0...l do 
    puts array[i] 
    end 
end 

put_array([1, 2, 3, 4, 5, 6]) 

出力は、アレイを印刷することであるが、私はこのような結果を得ておくべき私はrindex配列array.lastの代わりに試みましたが、私は同じ答えを得続けています

+2

代わりに、あなたはこれを行うにはしたいですか? –

+2

出力はわかりません。あなたのコードでは、この出力は完全に妥当と思われます。あなたは何をしたいのですか? – ndn

答えて

0

私はあなたの期待された出力が何だったか正確にはわかりません。

しかし、あなたのエラーは、彼らがそこで0から始まります。すなわち、ルビーの配列のインデックスはゼロベースであるという事実から来ている:

  • あなたの配列は、6つの要素を持つにもかかわらず、その最後の要素のインデックスは5であります
  • これは、インデックス値が1の配列を反復処理するときに、2番目の要素から開始していることを意味します。

  • 1...lでは、lを除き、1からlまでの整数の範囲である排他的な範囲を定義しています。あなたはリットルを含めたい場合は、あなたのコードへのクイックフィックスは以下のようになり1..l

を使用する必要があります。

for i in 0..l do 
puts array[i] 
end 

しかし、同じ出力を達成するためのより多くの慣用的な方法を次のようになります。

array.each {|e| puts e} 

また

l = array.index(array[-1]) 

はちょっと複雑です。なぜ単純にしないのですか?

l = array.length 
+0

私は間違っていました、私はインデックスを長さと間違えました.....私はarray.lengthが私の仕事をしたので、長さを印刷したいと思いました – 0sfh

0

あなたは単にputs配列それは、新しい行の配列の各要素を印刷する場合:

array = [1, 2, 3, 4, 5, 6] 
puts array 
#=> Output: 
1 
2 
3 
4 
5 
6 

def put_array(array) 
    puts array 
end 

> put_array(array) 

あなたは、インデックスベースで実行する場合:

> array.each_with_index {|e,i| puts array[i]} 
0

私は思います0...5が0,1,2,3,4で0,1,2,3,4,5ではなく数字の範囲を出力するので混乱します。他の人が述べたように、同じ出力を達成するための簡単な方法がありますが

5 
1 
2 
3 
4 
5 
6 

:あなたはその出力を意志for i in

def put_array(array) 
    l = array.index(array[-1]) 
    puts l 
    for i in 0..l do 
    puts array[i] 
    end 
end 

put_array([1, 2, 3, 4, 5, 6]) 

を開始する行で..ではなく...を使用する必要があります。

0

アレイを印刷しようとしているかどうかわかりません。あなたのコードは

array = Array.new 

def put_array(array) 
    l = array.length 
    for i in 0...l do 
    puts array[i] 
    end 
end 

put_array([1, 2, 3, 4, 5, 6]) 
0

indexはあなたに与えられたオブジェクトのインデックスを与え、その配列は-1が含まれていないため、あなたのケースでindex(-1)nilを与えるこの方法を変更することができます。あなたは答えがあることを期待したのは何

array.index(6) # => 5 (6 is at index 5 of array) 
array[5]  # => 6 (5th item in array is 6)  
array[-1]  # => 6 (-1th (aka last) item in the array is 6) 
array.last  # => 6 (last item in array is 6) 
関連する問題