2016-11-11 6 views
-1

この配列の要素をすべて選択するには、aで始まる要素を選択します。ここに私のコードは私が取得していますエラーが特定の文字で始まる配列から要素を選択してください。

Untitled.rb:3:in `select_elements_starting_with_a': wrong number of arguments (0 for 1) (ArgumentError) 
from Untitled.rb:6:in `<main>' 
+0

実際に配列が出力されているのを見たいと思う気持ちがあります。その場合、(以下の回答とともに) 'puts'ではなく' p'を使います。 –

答えて

4

@Ursusと@Adamは正しいです。しかし、私が作りたいもう一つの点があります。

プログラミング時には、問題の定義がどのように明確であるかを時々分かりやすく示しています。 aはあなたのコードで多くの役割を果たすので、おそらくこの小さな混乱を起こしました。aは果物の名前を持つ配列の名前です。 aは、メソッドで使用される仮パラメータの名前です。

さらに、この方法は非常に特殊です。善良であるとは限らないので、私はあなたに言わなければなりません。あなたのプログラムは、後で、bという文字で始まるすべての要素を特定すると仮定します。ほとんど同じコードで別のメソッドを作成する必要があります。

私の提案、

def select_elements_starting_with(arr,letter) 
    arr.select { |str| str.start_with?(letter) } 
end 

ような方法を再定義あなたのコードは本当に再利用可能にする今、あなたは要素が任意の配列内の任意の文字で始まるかもしれない、とあなたはあなたのでparamenterを渡すために忘却危険はありません仮パラメータと処理されている実際の配列インスタンスとを混同することはありません。

3
puts select_elements_starting_with_a 

ある

a = ['bananas', 'apples', 'pears', 'avocados'] 
def select_elements_starting_with_a(a) 
a.select { |str| str.start_with?('a') } 
end 
puts select_elements_starting_with_a 

であること

puts select_elements_starting_with_a(a) 

あなたのメソッドは、パラメータを期待し、あなたは何を渡していませんでなければなりません。

1

あなたの関数は、引数を取りますが、あなたはそれを1つずつ与えていない:

puts select_elements_starting_with_a a 
関連する問題