Was ist der Unterschied zwischen dem Anfügen und Voranstellen eines Doppelpunkts in Ruby?
Beispiel:
%Vor% Warum hat dependent:
einen angehängten Doppelpunkt, aber :models
und :destroy
haben einen vorangestellten Doppelpunkt? Was ist der Unterschied?
Dies ist eine neue Syntax in Ruby 1.9 zum Definieren von Symbolen, die Schlüssel in einem Hash sind.
Sowohl die vorangestellten als auch die angehängten :
definieren symbol
, aber letztere ist nur während der Initialisierung eines Hashes gültig.
Sie können sich ein -Symbol als einfache String-Konstante vorstellen.
Dies entspricht
%Vor%Vor 1.9 wurden Hashes mit einer Syntax definiert, die etwas verbaler und schwieriger zu tippen ist:
%Vor%Sie haben es in 1.9 vereinfacht:
%Vor%Wenn Sie jemals ein Modul schreiben, das Sie vor 1.9 in Ruby verwenden möchten, stellen Sie sicher, dass Sie die ältere Syntax verwenden.
Da Ruby Ihnen erlaubt, die Klammern ()
und in einigen Fällen die geschweiften Klammern {}
wegzulassen, ist es vielleicht nicht sehr offensichtlich, aber der obige Code sieht tatsächlich so aus:
has_many(:models, { dependent: :destroy } )
Nun bedeutet das, dass has_many
zwei Argumente benötigt, eins ist ein Symbol% co_de%, eine unveränderliche Zeichenfolge und ein Hash, wobei :
der Schlüssel und dependent
der Wert ist. auch vielleicht als destroy
gesehen.
Tags und Links ruby ruby-on-rails colon