2016-07-22 54 views
1

我正在學習rails,通過使用一些示例。這是我的樣品模型文件:Ruby:語法名稱爲:變量

class User < ApplicationRecord 
    # Include default devise modules. Others available are: 
    # :confirmable, :lockable, :timeoutable and :omniauthable 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 
end 

紅寶石語法,我不知道的是:

devise :database_authenticatable, :registerable, 
      :recoverable, :rememberable, :trackable, :validatable 

一些期試驗研究後,我知道上面的命令使用了Ruby的詩歌模式,這意味着沒有方法調用括號。所以上面的命令應該是:

devise(:database_authenticatable, :registerable, 
      :recoverable, :rememberable, :trackable, :validatable) 

我還是不明白什麼是文法名:variable。我已經搜查,但只知道@variable例如,@@variable類...

感謝

+2

這些是[symbols](http://ruby-doc.org/core/Symbol.html),基本上是不可變的(即不可更改的)字符串。它們通常用於通過名稱引用Ruby中的內容,例如,方法名稱,選項... –

回答

1

我沒有嚴格肯定的是,這是你所尋找的,而是由:之前任何字符串是Symbol。總之,一個符號就像一個字符串,除非每個提到的相同符號文字都是對同一個不可變基礎值的引用。在這種情況下,這些符號中的每一個(:database_authenticable,:registerable等等)都會給函數devise賦予特定的值作爲參數,推測可能會設置它的某些屬性。

1

由一個:前面的任何詞叫symbol。正如@Holger在他的評論中提到的,一個符號(最簡單的形式)是一個不可變的字符串。

符號是最常用的鍵和中引用密鑰的Hash

hash = { key: "value" } 

"value"然後可以通過調用哈希的鍵符號被引用:

hash[:key] 
=> "value"