我有这个Capabara方法,它有一个选项:
page.should have_selector("#jFooterStandardLinks", :visible => true)
该选项也可以提供:
page.should have_selector("#jFooterStandardLinks", visible: true)
这两种方法都有效但我在Eclipse IDE中遇到错误。
:visible => true
和visible: true
之间的区别是什么?visible:
仍被解释为Ruby符号吗?答案 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