我完全不确定为什么这不起作用。我让它在一秒钟之前工作但现在我再也无法让它正常运行了。最初,我试图将1或(num)添加到数组中的所有整数。
def my_array_modification_method!(i_want_pets, num)
i_want_pets=["I", "want", 3, "pets", "but", "only", "have", 2 ]
i_want_pets.map!{|i| i.is_a?(Integer) ? (i + num) : i;}
end
当我尝试运行时:
my_array_modification_method!(i_want_pets, 1)
我收到以下错误消息:
undefined local variable or method `i_want_pets' for #<Context:0x0000000174e6a8>
(repl):10:in `initialize'
答案 0 :(得分:1)
我刚刚在控制台中运行了这个,我认为你误解了它是如何工作的。使用您当前的代码:
def my_array_modification_method!(i_want_pets, num)
i_want_pets=["I", "want", 3, "pets", "but", "only", "have", 2 ]
i_want_pets.map!{|i| i.is_a?(Integer) ? (i + num) : i;}
end
my_array_modification_method!(i_want_pets, 1)
您首先定义方法my_array_modification_method
,但其中没有任何代码已经运行。接下来,使用参数i_want_pets
和1
调用方法。您的问题是i_want_pets
尚未定义。
我认为这就是你想要的。像这样定义你的方法(以下所有在Ruby 2.2.1上):
def my_array_modification_method!(i_want_pets, num)
i_want_pets.map!{|i| i.is_a?(Integer) ? (i + num) : i;}
end
=> :my_array_modification_method!
然后随后调用一个变量:
array_of_pet_things = ["I", "want", 3, "pets", "but", "only", "have", 2 ]
=> ["I", "want", 3, "pets", "but", "only", "have", 2]
现在,您可以使用array_of_pet_things
作为参数调用您定义的方法:
my_array_modification_method!(array_of_pet_things, 1)
=> ["I", "want", 4, "pets", "but", "only", "have", 3]
另请注意,由于您的方法使用map!
,因此原始数组array_of_pet_things
将被修改:
array_of_pet_things
=> ["I", "want", 4, "pets", "but", "only", "have", 3]