Qual è la ragione alla base della sintassi Se di CoffeeScript?

3

Nella maggior parte degli altri linguaggi la condizione viene prima che l'istruzione venga eseguita quando la condizione è soddisfatta. Tuttavia, in CoffeeScript (e forse in altre lingue) la sintassi è:

number = -42 if opposite

C'è qualche documentazione online su quale sia stata la logica alla base di questa decisione di progettazione per questa sintassi?

    
posta Muhammad Hasan Khan 21.01.2012 - 10:53
fonte

2 risposte

9

Penso che sia leggibile. La prima volta che ho visto questo concetto era in Ruby che eredita dalla filosofia Perl che "è ok avere più di un modo per farlo", da dove credo provenga.

Yukihiro Matsumoto: Ruby inherited the Perl philosophy of having more than one way to do the same thing. (from The Philosophy of Ruby)

C'è anche l'istruzione a meno che è uguale a "se non" (in CoffeeScript e Ruby). L'obiettivo è quello di avere un codice più leggibile e più simile alla lingua "parlata". L'ipotesi è che sia più veloce da capire e mantenere.

Esempio:

if (opposite) {
 x = -42;
}

o

x = opposite ? -42 : x

rispetto al tuo esempio.

Tieni presente che puoi ancora utilizzare la vecchia sintassi.

Dal punto di vista "archeologico" sembra che sia partito da Perl e poi ereditato da Ruby ( Ruby: On The Perl Origins Of" & & "E" || "Versus" e "And" or ". ). Ruby è una fonte di ispirazione per CoffeeScript.

    
risposta data 21.01.2012 - 11:02
fonte
0

Non è solo il fatto che ( -42 if opposite ) è espressione valida?

Lua ha qualcosa di simile, così fa Javascript.

Lua: a = a or b

JS: a = a || b

Questi sono casi d'uso importanti. Inizializza a meno che non sia già inizializzato.

Inoltre, in Lua puoi dire:

a = b and c or d

imposta a a b a meno che b sia nil o false, nel qual caso imposta a a d

    
risposta data 17.12.2012 - 07:35
fonte