我是Ruby的新手,我不太了解这里发生的事情,
这段代码有效
chrome = Watir::Browser.new:chrome
firefox = Watir::Browser.new:firefox
ie = Watir::Browser.new:ie
browser_conf = {
"chrome" => chrome,
"firefox" => firefox,
"ie" => ie
}
Run Code Online (Sandbox Code Playgroud)
但是以下代码会产生语法错误:
browser_conf = {
"chrome" => Watir::Browser.new:chrome,
"firefox" => Watir::Browser.new:firefox,
"ie" => Watir::Browser.new:ie
}
Run Code Online (Sandbox Code Playgroud)
语法错误,意外'}',期待keyword_end}
为什么会这样?有没有一种方法可以隐式写入而不将它们分配给单独的变量?
这里有一些稍微不正确的语法,在new调用结束时有一个冒号(:) .例如
chrome = Watir::Browser.new:chrome
Run Code Online (Sandbox Code Playgroud)
这可能会混淆散列解析器,它可以使用冒号作为键/值分隔符,因为ruby 1.9.例如
hash = {foo: 'bar'}
Run Code Online (Sandbox Code Playgroud)
无论周围环境如何,您都可以通过将其包装在括号中来强制评估一段代码.您可能会发现此代码有效:
browser_conf = {
"chrome" => (Watir::Browser.new:chrome),
"firefox" => (Watir::Browser.new:firefox),
"ie" => (Watir::Browser.new:ie)
}
Run Code Online (Sandbox Code Playgroud)
更新:我刚刚查看了Watir文档,我相信你的调用非常new正确.浏览器的符号是一个参数new.所以应该在空格之后,或在括号中.如果没有空格或括号,它并不总是能够将其解析为参数.
这是正确的代码:
browser_conf = {
"chrome" => Watir::Browser.new(:chrome),
"firefox" => Watir::Browser.new(:firefox),
"ie" => Watir::Browser.new(:ie)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1043 次 |
| 最近记录: |