2016-07-22 2 views
1

私はいくつかの例を使って作業をしています。ここに私のサンプルモデルファイルは次のとおりです。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 

、私は上記のコマンドを知っているルビーの詩モードを使用して、それはせずに、メソッド呼び出しを意味し、括弧。上記のコマンドは次のようにする必要があります。

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

文法名は:variableですが、まだ分かりません。私は...

おかげ

+2

これらは[記号](http://ruby-doc.org/core/Symbol.html)で、基本的に変更不可能な(つまり変更できない)文字列です。これらは一般的にRubyのものを名前で参照するために使用されます。メソッド名、オプション、... –

答えて

1

私は、これはあなたが探しているものですが、:が先行する任意の文字列がSymbolであることを厳密に一定ではありませんよ。

要約すると、シンボルは文字列に似ていますが、同じシンボルリテラルの各言及は同じ不変の基本値への参照です。この場合、これらのシンボル(:database_authenticable,:registerableなど)は、関数deviseの引数として特定の値を与えており、おそらくそれの特定の属性を設定しています。

1

symbolと呼ばれる:が先行する任意の単語を検索するだけで、クラスのインスタンスのための@variable@@variableを知っています。 @Holgerが彼のコメントで述べたように、シンボルは(その最も単純な形式で)不変の文字列です。

シンボルは、最も一般的にキーとして使用されており、中にキーを参照するHash

hash = { key: "value" } 

"value"、シンボルとして、ハッシュのキーを呼び出すことで参照することができます。これらが呼び出され

hash[:key] 
=> "value"