有什么区别:something =>真实的东西:在Ruby中是真的吗?

时间:2013-02-07 13:05:21

标签: ruby ruby-on-rails-3

我有这个Capabara方法,它有一个选项:

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

该选项也可以提供:

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

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

  • :visible => truevisible: true之间的区别是什么?
  • visible:仍被解释为Ruby符号吗?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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 })

第一种语法在ruby 1.8.7中不可用,正如@ckruse所说。

答案 2 :(得分:1)

唯一的区别是从红宝石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