在将此标记为" What is the colon operator in Ruby?"的副本之前,请阅读问题(仅限抢占式问题)。我不是在询问冒号实际上做了什么。
我最近试图为" Convert string to symbol/keyword"提出一个聪明的解决方案。我的第一个想法是为String类重载冒号运算符,就像Ruby对String上的+
方法所做的那样(我意识到这样做的潜在缺点)。但我发现:
不仅仅是String的可重载运算符。
" ruby运算符的first result on Google"不会将冒号显示为运算符。我无法找到声称是运营商的任何来源。我想它会与hashrocket(=>
)属于同一类别,但我不知道你会称之为什么。
那么这个特殊的冒号字符被归类为什么?你可以在Ruby源代码中指出它可能被改变的定义吗?
答案 0 :(得分:5)
解析程序分两步进行:
运算符,简单对象文字,关键字(例如begin
),=>
都是标记,并在步骤2中处理。标记在Ruby C代码中具有内部名称。
但是,作为方法中的命名参数或散列中的符号键的一部分的冒号在步骤1中处理,并且不是令牌;它没有特定的名称。