这有什么区别:和:这个?

时间:2013-08-07 18:37:59

标签: ruby

当在某些东西的开头和结尾使用时,冒号表示什么?我认为在某事物的乞讨时冒号(例如:set_cart)表示一种方法。它是否正确?以下是一些例子:

<%= button_to "Checkout", new_order_path, method: :get %>
<%= button_to "Empty Cart", @cart, method: :delete,
    data: {confirm: 'Are you sure?' } %>

编辑:另一个例子

before_action :set_cart, only: [:new, :create]
before_action :set_order, only: [:show, :edit, :update, :destroy]

2 个答案:

答案 0 :(得分:4)

这是symbol的新语法 - 索引哈希,在Ruby 1.9中引入(我相信)。

现在可以编写{ :key => 'value' }而不是旧{ key: 'value' }。在引擎盖下,哈希是完全相同的,所以它只是一个符号变化。

2.0.0p247 :001 > { key: 'value' }
 => {:key=>"value"}

在你的例子中,方法:: delete只是一种不同的写作方式:method =&gt; :删除

答案 1 :(得分:3)

开头处的冒号表示Ruby Symbol对象。

> :name.class
=> Symbol

某事物的 end 处的冒号表示Ruby Hash对象中的Symbol键。这个新的Hash语法是在Ruby 1.9中引入的。

> hash = { key: 'val' }
=> {:key=>"val"}

当它们一起使用时,正如预期的那样,它会创建一个带有键和值的哈希对作为符号。

> { key: :val }
=> {:key => :val}