1

我有一个带有选项的 Capabara 方法:

page.should have_selector("#jFooterStandardLinks", :visible => true)

也可以提供该选项,例如:

page.should have_selector("#jFooterStandardLinks", visible: true)

这两种方法都有效,但我在 Eclipse IDE 中遇到错误。

  • :visible => true和 和有什么不一样visible: true
  • 是否visible:仍被解释为 Ruby 符号?
4

3 回答 3

1

唯一的区别是从 ruby​​ 1.8x 到 1.9x 的过渡。现在它仍然完全一样,但可能最终会弃用 :visible => true 以支持 visible: true。

新的语法更简单、更简洁,与 JSON 更相似。

关于你的第二个问题,这是我发现的一个很好的报价:

“新符号是最常见的哈希样式的语法糖,所谓的符号到对象哈希。如果你在 irb 中这样做,你会看到 ruby​​ 返回旧学校的哈希,带有符号用作键:"

new_hash = {simon: "Talek", lorem: "Ipsum"}
# => {:simon=>"Talek", :lorem=>"Ipsum"} 

“如果您需要将任意对象作为哈希键,您仍然必须使用老派。”

资料来源:http ://breakthebit.org/post/8453341914/ruby-1-9-and-the-new-hash-syntax

于 2013-02-07T13:22:49.307 回答
1

没有区别。symbol: value是 的别名:symbol => value,只是第一个与 ruby​​ 1.8 不兼容。

于 2013-02-07T13:08:57.407 回答
1

没有区别。Ruby 接受key: value哈希语法,而键是符号。因此

x_method @blah, some_key: 'asdf', another_key: 3, yet_a_key: true # is equivalent to:
x_method(@blah, {:some_key => 'adsf', :another_key => 3, :yet_a_key => true })

正如@ckruse 所指出的,第一种语法在 ruby​​ 1.8.7 中不可用。

于 2013-02-07T13:09:04.297 回答