如何`:〜@`和`:!@`解析?

时间:2014-10-31 19:56:29

标签: ruby symbols literals

当我写:~@:!@时,它们会被评估为:~:!,这也可以通过编写:~和{{1}来实现}}。这些表达式是如何解析的,:!去了哪里?

1 个答案:

答案 0 :(得分:1)

这与解析器中的优先级有关。简单的破折号也会破坏冒号 - 手段 - 符号语法:

2.1.2 :004 > c = :test-thing
NameError: undefined local variable or method `thing' for main:Object

但是,解决它很容易:尝试:'~@'

(当然,如果您可以避免在代码中创建这样一个奇怪的符号,那可能是个更好的主意......)