gpt4 book ai didi

ruby - 语法错误,意外 '}',期待 keyword_end }

转载 作者:数据小太阳 更新时间:2023-10-29 08:15:03 25 4
gpt4 key购买 nike

我是 Ruby 的新手,我不太明白这里发生了什么,

这段代码有效

chrome = Watir::Browser.new:chrome
firefox = Watir::Browser.new:firefox
ie = Watir::Browser.new:ie

browser_conf = {
"chrome" => chrome,
"firefox" => firefox,
"ie" => ie
}

但是下面的代码会产生语法错误:

browser_conf = {
"chrome" => Watir::Browser.new:chrome,
"firefox" => Watir::Browser.new:firefox,
"ie" => Watir::Browser.new:ie
}

syntax error, unexpected '}', expecting keyword_end }

为什么会这样?有没有一种方法可以隐式编写而无需将它们分配给单独的变量?

最佳答案

这里有一些不太正常的语法,在 new 调用的末尾有一个冒号 (:)。例如。

chrome = Watir::Browser.new:chrome

这可能会混淆哈希解析器,它可以使用冒号作为键/值分隔符,因为 ruby​​ 1.9。例如

hash = {foo: 'bar'}

但是,您始终可以强制对一段代码进行求值,而不管其周围环境如何,只需将其括在方括号中即可。您可能会发现此代码有效:

browser_conf = {
"chrome" => (Watir::Browser.new:chrome),
"firefox" => (Watir::Browser.new:firefox),
"ie" => (Watir::Browser.new:ie)
}

更新:我刚刚检查了 Watir 文档,我相信您正在错误地调用 new。浏览器的符号是 new 的参数。所以应该在空格之后或括号中。没有空格或括号,它并不总是能够将其解析为参数。

正确代码如下:

browser_conf = {
"chrome" => Watir::Browser.new(:chrome),
"firefox" => Watir::Browser.new(:firefox),
"ie" => Watir::Browser.new(:ie)
}

关于ruby - 语法错误,意外 '}',期待 keyword_end },我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45481010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com