2015-11-08 53 views
-5

這是代碼有沒有辦法讓我每次使用定義的變量重置?

x = 10 
y = 11 
def z(q,x,y) 
    q = q - (x + y) 
end 
q = 30 
z(q,x,y) 
puts "#{q}"  
q = 40 
z(q,x,y) 
puts "#{q}" 

有沒有一種方式,Z(Q,X,Y)將每次我用它進行復位?

+4

請解釋你想要發生的事情。 – Anthony

+0

我希望z(q,x,y)在使用時工作,所以第一個投入是9,第二個投入是19 –

回答

0

試試這個:

x = 10 
y = 11 

def z(q,x,y) 
    q = q - (x + y) 
end 

q = 30 
z1 = z(q,x,y) 
puts "#{z1}"  

q = 40 
z2 = z(q,x,y) 
puts "#{z2}" 

打印(使用看跌期權):

9 
19 
0

一般情況下,你不應該修改PARAMS。在函數z中,q是一個已經設置的參數,但我認爲你也希望它成爲一個外部變量並改變它的狀態。

這是你想要做的,但請不要這樣做

x = 10 
y = 11 

def z(q,x,y) 
    $q = q - (x + y) 
end 

$q = 30 
z($q,x,y) 
puts "#{$q}" 

$q = 40 
z($q,x,y) 
puts "#{$q}" 

# Prints: 
# 9 
# 19 

這可能是錯誤的代碼。爲什麼?全局不好。當我們幸運地擁有像這樣純淨的數學函數時,像這樣的突變狀態是戰爭罪行,並且可能導致暴亂。我們有一個不需要改變狀態的數學函數。我們真的不希望Z到負責:

  • 計算一個新的值
  • 設置一個局部變量以備後用

第二部分是毀滅性的一部分。當Z不需要時,Z知道外部世界。

看看這是類似於其他答案已經在這裏:

x = 10 
y = 11 

def z(q, x, y) 
    q - (x + y) 
end 

q = z(30, x, y) 
puts q 

q = z(40, x, y) 
puts q 

如果您正在使用Ruby或編程一般起步,閱讀了大量的代碼,並觀看現場直播的工作中人們的截屏。這是升級一點點的最快路線。沒關係,如果它不馬上發生,下次嘗試會更容易(幾年後)。

相關問題