回答
它主要用作初始化變量到一定值時,如果沒有設置簡短。
想想聲明返回x || (x = y)
。如果x
具有一個值(false
除外),則只有||
的左側將被評估(因爲||
短路線),並且x
將不會被重新分配。但是,如果x
爲false
或nil
,則將評估右側,其將設置x
爲y
,並且將返回y
(賦值語句的結果在右側)。
有關更多討論,請參閱http://dablog.rubypal.com/2008/3/25/a-short-circuit-edge-case。
+1忘了它 – 2010-09-27 03:51:27
'x || = y'的行爲就像'x = y除非x'(如果我們假設x和y代表任意表達式而不一定是變量)是* not *與'x = x || (考慮x = x不是無操作的情況)或者x = y(如果x.nil?)(考慮x是假的情況)。 – sepp2k 2010-09-27 08:11:04
Jorg W Mittag認爲這是不正確的,在[他的回答](http://stackoverflow.com/questions/995593/what-does-mean-in-ruby)重複的問題。 – 2010-09-27 10:38:12
的思想是一致的,與其他類似的運營商(+=
,*=
等):
a ||= b
是a = a || b
而且這一招不僅限於紅寶石:它通過使用C根多種語言。
編輯排斥downvoters。
請參閱Jörg的其中一個鏈接以獲得更準確的近似值,例如this one。
這正是我不喜歡Ruby的原因:它看起來什麼都沒有。
值得注意的是,不是C或C++或Java。 – SingleNegationElimination 2010-09-27 03:43:10
@TokenMacGuy我的意思是一般'詭計':從'a = a @ b'產生'a @ = b'。 – 2010-09-27 03:49:47
這是錯誤的。請閱讀http://Ruby-Forum.Com/topic/151660及其中提供的鏈接。 – 2010-09-27 12:46:49
x ||= y
經常被用來代替x = y if x == nil
- 1. 在Ruby中``[var_name]`是什麼意思?
- 2. 在Ruby中,array * string是什麼意思?
- 3. $$在Ruby中是什麼意思?
- 4. 在Ruby中,「scoped」是什麼意思?
- 5. 「do | |」是什麼意思?在Ruby中?
- 6. 在Ruby中=〜和/ \是什麼意思?
- 7. 'a'在Ruby open()中意味着什麼?| f |是什麼意思?意思?
- 8. 什麼意思 - >在Ruby中的意思是
- 9. 是什麼意思:是什麼意思?
- 10. Ruby中的「陰影」是什麼意思?
- 11. ruby中的「class#method」是什麼意思?
- 12. Ruby中的+ =是什麼意思?
- 13. Ruby中的「temps.each(&:valid?)」是什麼意思?
- 14. Ruby這行代碼是什麼意思?
- 15. ruby語法是什麼意思?
- 16. 這個Ruby Regex是什麼意思?
- 17. 什麼?在C#中是什麼意思?
- 18. 在Ruby中「=>」是什麼意思,它是如何工作的?
- 19. 「?」是什麼意思?
- 20. $$ $$是什麼意思?
- 21. 什麼是「||」意思?
- 22. 「\\。\」,「\ ?? \」,「\\?\」,「\\」是什麼意思?
- 23. 「=」是什麼意思
- 24. &**是什麼意思?
- 25. 是什麼意思?
- 26. 「_」是什麼意思?
- 27. 什麼是:!:意思?
- 28. || =是什麼意思?
- 29. %%是什麼意思?
- 30. =是什麼意思?
該死的,當我搜索時找不到任何東西。 – ben 2010-09-27 06:19:56