2016-11-10 56 views
0

我不明白为什么我的代码不起作用有人可以帮我吗?我正在尝试创建一个将项目添加到数组末尾的方法。我认为我的问题在于我尝试访问本地变量的最后一行代码...谢谢!为什么这种方法不允许我添加到数组中?

def add_to_array(name) 
    array = [] 
    array << name 
end 

add_to_array("Rob") 
add_to_array("Jack") 

p array 
+1

Array秒的默认方法重写'在该方法的每次调用一个新的数组array'。此外,'array'是一个局部变量,在方法范围之外不可用。 – spickermann

+0

那么我的解决方案是什么?我需要将array = []放在方法之外吗?我将如何打印数组? –

回答

4

问题是您每次拨打add_to_array方法时都会创建一个新阵列。
除此之外,此数组是本地变量,并且有一个范围限于add_to_array的生命周期。

尝试以下操作:

def add_to_array(array, name) 
    array << name 
end 

array = [] 
add_to_array(array, "Rob") 
add_to_array(array, "Jack") 
p array 
+0

太棒了。谢谢。是否有可能以任何方式创建只有一个参数? –

+0

如果'array'是'object'的属性,那么你可以调用'object.add_to_array(“Rob”)'。 – moveson

+0

@RobMatthews做到这一点,'add_to_array'变量必须能够看到'array'变量。这可以通过某些方式完成。其中之一是用'@'声明'array'前缀,如下所示:'@array = []'。我刚刚创建了[主要](https://gist.github.com/lucasrodcosta/21ba8b2d3193f6786e6813805bcd8bb3)并提供了可能的解决方案。希望它有用=) –

相关问题