条件に応じて値をa
に設定する必要があります。
CoffeeScriptでこれを行うための最短の方法は何ですか?
例えば。これは私がJavaScriptでそれをする方法です:
a = true ? 5 : 10 # => a = 5
a = false ? 5 : 10 # => a = 10
すべてが式であり、その結果値になるので、if/else
を使用することができます。
a = if true then 5 else 10
a = if false then 5 else 10
式の例についてもっと詳しく知ることができます ここ 。
a = if true then 5 else 10
a = if false then 5 else 10
ドキュメント を参照してください。
ほとんどの言語でこれは代わりに動作するはずです。
a = true && 5 || 10
a = false && 5 || 10
CoffeescriptはJavaScriptの3項演算子をサポートしません。これがコーヒースクリプト作者の理由です。
私は三項演算子が次の人と同じぐらい大好きです(実際にはもう少し実際に)が、構文はそれらを良くするものではありません - 彼らはif/elseを単一行に収めることができるので素晴らしいです。式です。
それらの構文は、暗記する魔法のもう一つのちょっとした誤解であり、その言語の他のものと何の類似点もありません。結果が同じで、私はむしろ
if/elses
を常に同じように見せたい(そして常に式にコンパイルしたい)のです。したがって、CoffeeScriptでは、else行を含まないif文の場合と同様に、複数行のifでも適切な場合には3項にコンパイルされます。
if sunny go_outside() else read_a_book(). if sunny then go_outside() else read_a_book()
どちらも三項になり、どちらも式として使用できます。それは一貫しており、学ぶべき新しい構文はありません。だから、提案をお寄せいただきありがとうございますが、私は "wontfix"としてこのチケットを閉じています。
Githubの問題を参照してください。 https://github.com/jashkenas/coffeescript/issues/11#issuecomment-97802
それが主に真の用途であれば、2つのステートメントで書くこともできます。
a = 5
a = 10 if false
さらに可能性が必要な場合は、switchステートメントを使用してください。
a = switch x
when true then 5
when false then 10
ブール値でそれは特大かもしれませんが、私はそれが非常に読みやすいと思います。
複数行バージョン(例えば、各行の後にコメントを追加する必要がある場合):
a = if b # a depends on b
then 5 # b is true
else 10 # b is false
CoffeeScript
には三項演算子がありません。それがドキュメントが言うことです。
あなたはまだのような構文を使用することができます
a = true then 5 else 10
それははるかに明確です。