2016-04-04 16 views
1

Ich habe eine hamlc (bekannt als Haml + Inline Coffeescript), die eine Leitung hat wieWas bedeutet der Operator? =?

- @variable1 ?= @object1.element[0] 

Ich frage mich, ob dies bedeutet: wenn @object1.element[0] einen Wert hat, dann speichern Sie es in @variable1.

Ich kann keine Informationen über hamlc finden. Auch wenn das, was ich verstehe, richtig ist, was ist, wenn ich einen else Zustand hinzufügen möchte?

+0

'- wenn variable1 = "// etwas tun, wenn" sonst = "// etwas anderes tun"' breake in Linien – 7urkm3n

+0

Ihnen für Ihre Antwort danken. @ 7urkm3n – Takumi

+0

Auch das sollte funktionieren: '@ variable1 = @object? ? @ object1.element [0]: 'EMPTRY @ object'' – 7urkm3n

Antwort

2

Der Operator ?= ist in CoffeeScript als existential operator bekannt.

Aus der Dokumentation:

Es ist ein wenig schwierig für die Existenz einer Variablen in JavaScript zu überprüfen. if (variable) ... kommt nahe, aber scheitert für Null, die leere Zeichenfolge und false. CoffeeScript's existentieller Operator? gibt true zurück, es sei denn, eine Variable ist null oder undefiniert, was sie analog zu Rubys nil macht?

Das bedeutet, dass das System funktioniert so, Ihr Beispiel mit:

@variable1 ?= @object1.element[0] 

Wenn @variable1 ist null oder undefined, weisen @object1.element[0] zu.

Was ist, wenn ich die Bedingung für "sonst" hinzufügen möchte?

@variable1 = 
    if @variable1? 
    @object1.element[0] 
    else 
    # your else clause here 
+0

Sehr klare Antwort. Ich danke dir sehr!! – Takumi

+0

Eigentlich kannst du auch '... = @ variable1? @ object1.element [0] ' – Markus