有人可以解釋什麼(:+)在Ruby中嗎?我試着用google搜索&尋找參考指南,找不到任何東西。謝謝,對不起,我很新的紅寶石&編程。有人可以解釋一下Ruby(?)是什麼嗎?
1
A
回答
3
冒號:
之前的一個字符*是一個Symbol
文字。這適用於:+
,這是一個內容爲「+」的Symbol
。
在某些情況下,可以使用符號來引用具有相同名稱的方法,並且在一些地方,您的示例:+
可以是對+
運算符的引用,該運算符實際上只是具有相同名稱的方法。 Ruby支持語法來調用它,當它看到一個普通的+
在表達式中,或在一些核心方法它會轉換:+
您也可以使用:+
速記創建一個整數Array
的總和的例子:
[1,2,3,4].inject(:+)
=> 10
這工作,因爲Ruby有特例,即具體使用中Array#inject
運營商(在Enumberable#inject
實際上定義,Array
從該模塊得到它)。
一個更普遍的用例像這樣的符號是send
方法:
2.send(:+, 2)
=> 4
雖然2.send("+", 2)
作品就好了。如果使用這種方式而不是僅僅使用2 + 2
,這看起來可能很奇怪,但如果您想對運算符進行更加動態的選擇,它可能非常方便。
*
允許的Symbol
字面允許或不允許的語法規則是有點神祕。它們可以讓你在可能的情況下編寫較短的文字,但Ruby必須避免一些模棱兩可的語法,例如Symbol
,其中.
或中間爲空白。這是允許的,只要你生成這樣一個Symbol
例如你必須添加引號。 :"this.that"
2
相關問題
- 1. 有人可以解釋一下嗎?
- 2. 有人可以解釋嗎?
- 3. 有人可以向我解釋這是什麼嗎?
- 4. 有人可以解釋這條線是什麼嗎?
- 5. Javascript - 有人可以向我解釋這到底是什麼嗎?
- 6. ASM到C - 有人可以解釋我是什麼結構嗎?
- 7. 有人可以解釋什麼是電線級協議嗎?
- 8. 有人可以解釋這一點嗎?
- 9. 有人可以解釋下面的SQL查詢是幹什麼的嗎?
- 10. 什麼是IBM Worklight?任何人都可以向我詳細解釋一下嗎?
- 11. 有人可以解釋我的代碼有什麼問題嗎?
- 12. 有人可以解釋我的代碼有什麼問題嗎?
- 13. 有人可以解釋爲什麼以下DQL的作品?
- 14. 有人可以解釋一個代表是什麼樣的例子嗎?
- 15. Lua任何人都可以解釋這是什麼嗎?
- 16. 有人可以解釋這個codesnippet中發生了什麼嗎?
- 17. 有人可以解釋爲什麼這個操作無效嗎?
- 18. 有人可以解釋OAuth Response Token/TokenSecret用於什麼嗎?
- 19. 有人可以解釋這裏發生了什麼嗎?
- 20. 有人可以解釋這些if語句在說什麼嗎?
- 21. 有人可以解釋這個錯誤意味着什麼嗎?
- 22. 有人可以解釋這裏發生了什麼嗎?
- 23. 我無法理解XlSaveAsAccessMode是什麼,有人可以解釋它嗎?
- 24. 有人可以解釋一下Java中的Function對象嗎?
- 25. 有人可以解釋一下蘋果評論指南嗎?
- 26. 有人可以解釋下面一段Javascript代碼嗎?
- 27. 有人可以解釋下面的一段代碼嗎?
- 28. 有人可以解釋一下com.google.inject的用途嗎?
- 29. 有人可以解釋一下這段Python代碼嗎?
- 30. 有人可以解釋一下Google的主頁JS嗎?
作爲一個說明'#inject'實際上是一個'Enumerable'方法'Enumberable#inject',而不是那個好的答案。 – engineersmnky 2014-10-29 20:50:17
太好了。謝謝Neil,這真是一個很棒的解釋,非常感謝。 – Jinn 2014-10-29 20:55:21
您可能想要限定「特殊」。 ':$ set',':@ name'和':'煎餅屋在哪裏?''都是符號,但有些可能會調用這些特殊字符。 – 2014-10-29 21:02:14