2016-07-22 4 views
1

Ich lerne Schienen, indem ich mit einigen Beispielen arbeite. Hier ist mein Beispielmodell ist file:Ruby: Grammatikname für: Variable

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

Der Rubin Grammatik Ich weiß nicht, ist:

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

Nach einigen Forschungen, ich weiß über Befehl verwendet Poesie Modus von Rubin, bedeutet das Verfahren ohne Berufung Klammern. so sollte obige Befehl sein:

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

Ich verstehe immer noch nicht, was Grammatik Namen :variable. Ich habe gesucht, aber weiß nur @variable zum Beispiel @@variable für Klasse ...

Dank

+2

Dies sind [Symbole] (http://ruby-doc.org/core/Symbol.html), grundsätzlich unveränderliche (d. H. Unveränderbare) Zeichenketten. Sie werden allgemein verwendet, um auf Dinge in Ruby mit Namen zu verweisen, z. Methodennamen, Optionen, ... –

Antwort

1

Ich bin nicht streng sicher, dass das ist, was Sie suchen, aber jede Folge von durch eine : voraus Zeichen ist ein Symbol.

Zusammenfassend ist ein Symbol wie eine Zeichenfolge, außer dass jede Erwähnung des gleichen Symbolliterals eine Referenz auf denselben unveränderlichen zugrunde liegenden Wert ist. In diesem Fall gibt jedes dieser Symbole (:database_authenticable, :registerable usw.) bestimmte Werte als Argumente für die Funktion devise an und setzt vermutlich bestimmte Attribute davon.

1

Jedes Wort, das von einem : vorangestellt ist ein symbol genannt. Wie @Holger in seinem Kommentar erwähnt hat, ist ein Symbol (in seiner einfachsten Form) eine unveränderliche Zeichenkette.

Symbole werden am häufigsten als Schlüssel verwendet und Schlüssel zu referenzieren a innerhalb Hash:

hash = { key: "value" } 

"value" kann dann durch den Aufruf der Schlüssel des Hash referenziert werden als Symbol:

hash[:key] 
=> "value"