在将此标记为" Ruby中的冒号操作符是什么? " 的副本之前,请先阅读问题(只是先发制人).我不是在询问冒号究竟做了什么.
我最近试图想出一个聪明的解决方案" 将字符串转换为符号/关键字 ".我的第一个想法是为String类重载冒号运算符,就像Ruby +对String上的方法一样(我知道这样做的潜在缺点).但我发现它:不仅仅是String的可重载运算符.
Google对"ruby运算符" 的第一个结果并未将冒号显示为运算符.我找不到任何声称它是运营商的消息来源.我想它会与hashrocket(=>)属于同一类别,但我不知道你会称之为什么.
那么这个特殊的冒号字符被归类为什么?你能指出它在Ruby源中的定义,它可能会被改变吗?
解析程序分两步进行:
运算符,简单对象文字,关键字(例如begin)=>都是标记,并在步骤2中处理.标记在Ruby C代码中具有内部名称.
但是,作为方法中的命名参数或散列中的符号键的一部分的冒号在步骤1中处理,并且不是令牌; 它没有特定的名称.