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/elsesalltid 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
