2013-08-07 130 views
0

冒號在開始和結束時用於表示什麼?我認爲在某事物的乞討(例如:set_cart)上冒號表示一種方法。它是否正確?這裏有幾個例子:這和之間有什麼區別:and:this?

<%= 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] 
+0

這是一個符號,如果你想知道更多關於這個在互聯網上有大量的資源,但你可以檢查該帖子,例如:http://www.robertsosinski.com/2009/01/ 11/the-difference-between-ruby-symbols-and-strings /:) – Raindal

+0

@Sparda「這是一個符號」如果你沒有指定你指的是':this'而不是'this :'。 –

+0

@AndrewGrimm據我所知,沒有Hashes和東西的微妙之處,它們都是符號... – Raindal

回答

3

冒號開頭表示Ruby Symbol對象。

> :name.class 
=> Symbol 

在某事的冒號表示在Ruby Hash對象一個符號鍵。這個新的Hash語法是在Ruby 1.9中引入的。

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

當它們一起使用時,正如所料,它創建了一個對散列用密鑰和值,該值是符號。

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

這是symbol -indexed哈希Ruby 1.9中新的語法,介紹了(我相信)。

而不是舊的{ :key => 'value' }現在你可以寫{ key: 'value' }。在引擎蓋下哈希是完全一樣的,所以它只是一個真正的符號更改。

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

在你的例子中,方法:: delete只是一種不同的寫法:method =>:delete。

+1

另外,OP的示例代碼使用方法調用約定,從而在末尾找到散列鍵/值語法一個方法調用被彙總爲一個'Hash'參數。 –

相關問題