2016-05-09 12 views

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

analysiert
+ 
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";` 
+0

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

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 –