我是Ruby和本站的新手。Ruby中的字符串運算符+和<<之間的區別
以下兩個函數是不同的,一個會改變函數外的變量,而另一個不會。
def m1 (x)
x << "4"
end
def m2 (x)
x = x + "4"
end
str="123"
m2(str) #str remains unchanged 123
m1(str) #str is changed to 1234
我想確保我這個理解正確 -
當M1被調用時,引用STR被複制並傳遞給看到它爲x的函數。運算符< <更改引用原始str的x,所以str通過此操作進行更改。
當調用m2時,對str的引用被複制並傳遞給將其視爲x的函數。運算符+創建一個新字符串,賦值x = x +「4」只是將x重定向到新字符串,而不改變原來的str變量。
,對嗎?
感謝
'm2(str)'應該返回''1234「',那麼'm1(str)'應該返回''1234」',之後'str'將等於''1234「'。你確定你的結果嗎? – mraaroncruz 2013-03-17 14:54:24
我使用'Ruby 1.9.3p392',它適用於我的情況。在這些方法之前加上'puts'並檢查。 – Davit 2013-03-17 14:54:33
@tmpmember你的意思是「它的作用」在你的情況下是什麼? – mraaroncruz 2013-03-17 14:55:49