向数组中的所有整数添加一个

时间:2015-04-08 23:06:22

标签: ruby arrays

我完全不确定为什么这不起作用。我让它在一秒钟之前工作但现在我再也无法让它正常运行了。最初,我试图将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'

1 个答案:

答案 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_pets1调用方法。您的问题是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]