我寫了一個小的ruby函數,它根據字符串的長度改變字符串變量。打印結果顯示,在該函數中,該變量被更改 - 但是在稍後在程序中調用它時,它總是被重置爲默認值。如何從Ruby函數中返回值以用於程序的其餘部分
#ruby variable test
def mrn_value(mrn_length, mrn)
if mrn_length < 7
case mrn_length
when 6
mrn = '0' << mrn
return mrn
when 5
mrn = '00' + mrn
return mrn
when 4
mrn = '000' + mrn
return mrn
when 3
puts mrn
mrn = '0000' + mrn
puts mrn
return mrn
when 2
mrn = mrn.to_s
puts 'mrn of 2 length' #prints 'mrn of 2 length'
mrn = '00000' + mrn
puts 'mrn altered in case statement: ' + mrn #prints 'mrn altered in case statement 0000012'
when 1
mrn = '000000' + mrn
return mrn
end
end
end
mrn = 12
mrn = mrn.to_s
mrn_length = mrn.length
mrn_value(mrn_length, mrn)
puts 'Returned MRN: ' + mrn #prints '12'
我需要的是返回的MRN是改變的MRN。想法?
感謝您的解釋和例子。我認爲「返回」命令會導致修改後的變量在函數外部可用,我誤解了嗎? – Elisa 2014-10-08 02:29:17
Ruby是通過值傳遞的,而不是通過引用傳遞。你不能傳遞變量,變量不是對象。你只能傳遞對象。 – 2014-10-08 08:16:34
@Elisa - 如果你按照下面的rohit89的例子,這將工作。你必須重新分配給mrn。 – Phil 2014-10-08 10:23:04