- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
除了作为最后一个参数的散列之外,您可以在 Ruby 中在方法调用时去掉括号并获得一致的结果(您仍然需要注意优先级)。
但是,我遇到了一个不是这样的例子:
''.split(/ ./) # => []
''.split /./ # => []
''.split / ./ # !> SyntaxError: unexpected '.'
这是错误/回归(我用 2.1.2 -> 2.4.1 Rubys 测试过)吗?
还有其他一般情况下删除括号不能按预期工作吗?
Reported it ,让我们看看。
更新:票被拒绝的有点含糊。目前尚不清楚它是否是错误,但它不会得到修复,建议在这些情况下使用 %r{}
。原因确实是开头的斜杠被解释为除法。
最佳答案
除了thesecretmaster's answer ,让我们深入了解 Ruby 解析器:
require 'ripper'
require 'pp'
pp Ripper.lex("''.split /./")
# [[[1, 0], :on_tstring_beg, "'" ],
# [[1, 1], :on_tstring_end, "'" ],
# [[1, 2], :on_period, "." ],
# [[1, 3], :on_ident, "split"],
# [[1, 8], :on_sp, " " ],
# [[1, 9], :on_regexp_beg, "/" ],
# [[1, 10], :on_tstring_content, "." ],
# [[1, 11], :on_regexp_end, "/" ]]
添加空格使 Ruby 将 /
字符识别为除法运算符:
pp Ripper.lex("''.split / ./")
# [[[1, 0], :on_tstring_beg, "'" ],
# [[1, 1], :on_tstring_end, "'" ],
# [[1, 2], :on_period, "." ],
# [[1, 3], :on_ident, "split"],
# [[1, 8], :on_sp, " " ],
# [[1, 9], :on_op, "/" ],
# [[1, 10], :on_sp, " " ],
# [[1, 11], :on_period, "." ],
# [[1, 12], :on_op, "/" ]]
Are there other generic cases where dropping the parens doesn't work as expected?
人为的例子:
def foo(i = 1)
10 * i
end
foo(- 2) #=> -20
foo - 2 #=> 8
另一个:
b = 2
def a(arg)
arg
end
a *b #=> 2
a = 5
a *b #=> 10
第一个 a *b
被解释为 a(*b)
,而第二个变成 a * b
。添加括号会强制 Ruby 调用该方法:
a(*b) #=> 2
关于ruby - parens 出现奇怪的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43046927/
这个问题已经有答案了: What is the meaning of (0, someFunction)() in javascript [duplicate] (3 个回答) 已关闭 5 年前。 这
如果在 emacs 缓冲区中有这段代码: (if (> x 5 true false)) 当我尝试编辑它以修复括号时,发生了一些非常烦人的事情!当我尝试向 if 条件添加右括号时,em
除了作为最后一个参数的散列之外,您可以在 Ruby 中在方法调用时去掉括号并获得一致的结果(您仍然需要注意优先级)。 但是,我遇到了一个不是这样的例子: ''.split(/ ./) # => []
在以下情况下如何为每个 child 分配类(class): 读取数据选项值,并为子ul分配相同的类名 First Item Second level link
好的, 我不知道是否可以编写此正则表达式,所以我将首先寻求帮助 - 到目前为止我还没有成功。 源字符串: ,convert(varchar(8000), lt.text) as reason 期望的匹
我正在尝试使用 java 开发一种使用递归来分析以下形式的字符串的方法: (PART0(PART1(PART2)(PART3))) 我希望该方法能够拆分相关的字符串。我希望此方法使我能够对 Strin
为了实践,我已经定义了 (defmacro quote-paren "body -> `(body)" [& body] `(~@body)) 其中具有预期的转换 (quote-paren
任何人都可以建议解决此编码难题的最佳优化方法吗?我使用了一堆 if 语句,并被告知这只会增加圈复杂度。解决方案是正则表达式还是数据结构(例如堆栈)?非常感谢任何反馈。 /** * Write a f
我在 OSX 上使用 Cocoa Emacs24+Evil。我已经启用了 show-paren-mode。但是在正常状态下,当光标在右括号上时,括号对不会高亮显示。只有当光标在左括号上或位于右括号之后
我最初写了一些这样的代码: class Foo { public: Foo() : m_buffer() {} private: char m_buffer[1024]; }; 比
是否有任何自定义修改可以在光标位于两个大括号内的整个时间内保持大括号突出显示? 默认行为是仅暂时突出显示大括号,然后一旦光标位于大括号内,大括号就会消失。 最佳答案 看看Higlight Parent
我正在测试算术公式 (Ex. ((5-6)/(3+2)*34) ) 是否有平衡括号,但我检查左右括号的循环返回的结果不相等。我正在通过在出现提示时在控制台中输入“()”来测试它。 for (int i
我在 Pickaxe Ruby 书中发现了一个正则表达式,用于查找平衡的大括号表达式,我正试图在它的基础上构建一个匹配平衡大括号/方括号/圆括号的正则表达式。 原文: re = / \A
如何仅为 *.el 文件启用 Show-Paren 模式? 我试过了 (add-hook 'emacs-lisp-mode-hook '(lambda()
我看不出以下代码中哪里漏掉了括号/引号,但出现以下错误: processing.app.SketchException: Maybe there's an unclosed paren or quot
我怎样才能让这段代码 jsLint 满意? ;(function ( $, window, document, undefined ) { //some code })( jQuery, wind
这个问题在这里已经有了答案: What is the difference between $(command) and `command` in shell programming? (6 个答案
我正在使用 readline 制作一个带有交互式提示的程序图书馆。我希望提示支持匹配括号突出显示,所以我在 ~/.initrc 中设置了 blink-matching-paren 和 set blin
我正在尝试将样式应用于无序列表中绝对位于 标签内的元素,想法是通过将鼠标移到主要父元素上可以将自定义样式应用于所有元素具有绝对位置的子元素。 在示例中我们可以看到,当鼠标悬停在主要元素上时,为没有绝对
我是 lisp 的初学者。考虑以下两个示例: guile -c "(display 2)" # prints 2 guile -c "display 2" # doesn't print 2 我一直将
我是一名优秀的程序员,十分优秀!