`:〜@`和`:!@`解析?
当我编写:[email protected]
和:[email protected]
时,它们被评估为:~
和:!
,这也可以通过编写:~
和:!
来实现。这些表达式是如何分析的,以及@
去哪里了?`:〜@`和`:!@`解析?
这与解析器中的优先级有关。一个简单的冲刺击败结肠手段 - 一个符号语法,太:
2.1.2 :004 > c = :test-thing
NameError: undefined local variable or method `thing' for main:Object
这是很容易解决的,虽然:尽量:'[email protected]'
,
(当然,如果你能避免产生这样的一个奇怪的符号在你的代码中,这可能是一个更好的主意......)
如果这样解析,那么没有问题。问题在于它被静静地解析为另一件事。而且,这不是一个奇怪的符号。它是一个方法名称,它也应该是这种方法的方法定义的返回值。 – sawa 2014-11-06 14:49:07
@sawa - 我当然认为它应该引发一个错误,就像在我的'事情'例子中。通过“怪异”我只意味着'@'具有特定的ruby含义,即类属性的前缀,因此我认为解析器将它视为一种特殊情况。 – 2014-11-06 16:00:26
@engineersmnky,我认为它是指一个符号。 – 2014-10-31 20:08:22
您可能想要注意': - @'按预期工作,但是':!@'不是,而' - @'是一元否定方法,但'!@'不是方法。 – 2014-10-31 20:23:30
根据ruby_parser,它无处可去:'RubyParser.new.parse(“:〜@”)#=> s(:lit,:〜)' – ThomasSevestre 2014-10-31 20:43:46