In coffeescript sz +"text"
unterscheidet sich von sz + "text"
. Beachten Sie den Speicherplatz nach +
. Warum das? Ich kann es nicht auf the coffeescript website finden. Was nützt diese Syntax? Ist es ein Fehler?Warum ist `sz +" text "` anders als `sz +" text "` in coffeescript?
0
A
Antwort
2
Coffescript hat signifikante Leerzeichen. Und Sie müssen keine Klammern verwenden, um eine Funktion aufzurufen, wenn Sie Argumente übergeben. a b c
bedeutet a(b(c))
. Nicht sicher, ob es gut oder schlecht ist. Dies ist jedoch in funktionalen Programmiersprachen üblich, in denen "die wichtigste Konstruktion" ein Funktionsaufruf ist.
Der erste Ausdruck sz +"text"
zu analysiert wurde
call
sz UnaryPlus
"text"
Der zweite sz + "text"
wurde
+
sz "text"
BTW nicht +
verwenden Strings verketten. Coffescript unterstützt String-Interpolation.
sz = 'hello' # single quotes no interpolation
"#{sz}text" # double quotes compiles to `sz + "text";`
1) Ich denke, Sie haben es ausgetauscht. Der erste ('sz +" text ")' behandelt sz als Funktionsaufruf. 2) Was ist ein guter Zweck dafür? Es ist komisch, dass etwas außerhalb von sz kontrolliert, ob sz ein Funktionsaufruf ist oder nicht. 3) Ich habe Coffeescript vergessen. Aber das Problem tritt immer noch auf, wenn Sie etwas wie '(25 + 3) +" text "schreiben, was eines der wenigen Male ist, in denen Sie keine Interpolation verwenden können –
1) True. :) 2) Nun, es ist eine Art Meinung basiert. Aus irgendeinem Grund neigt ML FP Camp dazu,() auf jeden Fall zu vermeiden. IMHO macht es definitiv Code schwieriger zu lesen, wenn überstrapaziert 3) Sie können Ausdrücke in Vorlagenstrings '" # {25 + 3} Äpfel "' verwenden –