javascript - Ternær operasjon i CoffeeScript


Jeg trenger å sette verdien til a som avhenger av en betingelse.

Hva er den korteste måten å gjøre dette på med CoffeeScript?

For eksempel, slik ville jeg gjort det i JavaScript:

a = true  ? 5 : 10  # => a = 5
a = false ? 5 : 10  # => a = 10

Svar #1

Siden alt er et uttrykk, og dermed resulterer i en verdi, kan du bare bruke if/else.

a = if true then 5 else 10
a = if false then 5 else 10

Du kan se mer om eksempler på uttrykk her.

Svar #2

a = if true then 5 else 10
a = if false then 5 else 10 

Se dokumentasjonen.

Svar #3

På nesten alle språk bør dette fungere i stedet:

a = true  && 5 || 10
a = false && 5 || 10

Svar #4

Coffeescript støtter ikke JavaScripts ternære operator. Her er grunnen fra coffeescript-forfatteren:

Jeg elsker ternære operatorer like mye som den neste typen (antagelig litt mer, faktisk), men syntaksen er ikke det som gjør dem gode -- de er flotte fordi de kan få plass til en if/else på en enkel linje som et uttrykk.

Deres syntaks er bare en annen bit av mystisk magi å memorere, uten noe tilsvarende til noe annet i språket. Resultatet er likt, jeg vil mye heller at if/elses alltid ser likt ut (og alltid blir kompilert til et uttrykk).

Så, i CoffeeScript vil selv flerlinjede if-setninger kompilere til ternære uttrykk når det er passende, det samme gjelder if-setninger uten en else-klausul:

if sunny   
  go_outside() 
else   
  read_a_book().

if sunny then go_outside() else read_a_book()

Begge blir ternærer, begge kan brukes som uttrykk. Det er konsekvent, og det er ingen ny syntaks å lære. Så, takk for forslaget, men jeg lukker denne saken som "wontfix".

Vennligst henvis til GitHub-problemet: https://github.com/jashkenas/coffeescript/issues/11#issuecomment-97802

Relaterte artikler