我想选择以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
我得到的错误是
Untitled.rb:3:in `select_elements_starting_with_a': wrong number of arguments (0 for 1) (ArgumentError)
from Untitled.rb:6:in `<main>'
答案 0 :(得分:5)
@Ursus和@Adam是对的。但是我想提出另一点。
当你编程时,你命名的方式有时会表明你脑海中问题的定义有多清楚。您可能因为a
在您的代码中扮演了很多角色而造成了这种小混乱:a
是带有水果名称的数组的名称; a
也是您的方法使用的形式参数的名称。
此外,这种方法非常具体。我必须告诉你,要特别好。假设您的程序稍后应识别以字母 b 开头的所有元素。我必须使用几乎相同的代码创建另一种方法。
我的建议是,让你的代码真正可重用,重新定义方法
def select_elements_starting_with(arr,letter)
arr.select { |str| str.start_with?(letter) }
end
现在你可能会在ANY数组中找到以任何字母开头的元素,并且你不会冒险尝试传递参数,因为你不会在形式参数和正在处理的实数组实例之间混淆。
答案 1 :(得分:3)
puts select_elements_starting_with_a
应该是
puts select_elements_starting_with_a(a)
你的方法需要一个参数而你什么也没有通过。
答案 2 :(得分:1)
你的函数需要参数,但你没有给它一个:
puts select_elements_starting_with_a a