2016-11-10 54 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)並提供了可能的解決方案。希望它有用=) –

相關問題