2014-03-06 78 views

回答

4

Ruby沒有按引用傳遞參數:

def change(x) 
    x = 2 # this assigns to a local variable 'x' 
end 

a = 1 
change(a) 
a #=> 1 

你可以通過一個可變的對象,而不是如散列「含有」整數:

def change(h) 
    h[:x] = 2 
end 

h = {x: 1} 
change(h) 
h[:x] #=> 2 
3

Ruby不能這樣工作。沒有指針,如果這就是你的意思和它。參數通過傳遞,但這些值本身是對內存中對象的引用。

你稱之爲「原語」(例如值爲1)實際上是Ruby中的不可變對象,因此指向它們是沒有意義的。傳遞一個包含該對象的變量是一條路。

我很好奇你想達到什麼。

+0

Thanx。我想要一個原始類型的指針。那麼我是否必須將原始類型放入包裝類中並傳遞包裝的引用? 在ruby中沒有任何內置的原始類型的包裝類型? (例如:int Integer for int,Double for double) – Lahiru

+2

@Lahiru Ruby中沒有原始類型,'1'是一個對象。也許你應該提供一個例子。你想做什麼? – Stefan

+0

@Lahiru - 在java中'Integer'和'Double'是包裝,但不可變,所以他們無法幫助你做任何你想做的事情...... –