在ruby 1.8.7
語法錯誤而不是當+ =
爲什麼這是確定:
string += method "value"
但是,這提出一個語法錯誤:
string << method "remove reviewer"
是一樣的更新版本的紅寶石的行爲?
在ruby 1.8.7
語法錯誤而不是當+ =
爲什麼這是確定:
string += method "value"
但是,這提出一個語法錯誤:
string << method "remove reviewer"
是一樣的更新版本的紅寶石的行爲?
您可以用不同的Operator Precedence的<<
和=+
和方法調用來解釋此行爲。
紅寶石讀取你的第一個例子是:
string += (method "value")
,但第二個是:
(string << method) "remove reviewer"
IMO是使用圓括號的方法調用,即使Ruby沒有需要他們一個很好的做法在許多情況下。這使得代碼更具可讀性並且更少出錯:
string += method("value")
string << method("remove reviewer")
是的,在更高版本的Ruby中也是如此。 (我在Ruby 2.2上測試過)。
這是因爲Ruby的operator precedence。
要解決這個問題,你可以在使用的情況下的<<
括號:
string << method("remove reviewer")
然後,它應該工作,也就不會出現語法錯誤。
或者,使其保持一致,可以使用括號對他們倆的:
string += method("value")
string << method("remove reviewer")
逸岸,強烈建議使用括號()
的方法調用,以避免這種情況就像一個你」再問一次。查詢this post瞭解更多信息。
是的,在更高版本的Ruby中也是如此。 (我在Ruby 2.2上測試過) –