有人可以解释什么(:+)在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