条件に応じて値を設定する必要がありa
ます。
CoffeeScriptでこれを行う最短の方法は何ですか?
たとえば、これは私がJavaScriptで行う方法です。
a = true ? 5 : 10 # => a = 5
a = false ? 5 : 10 # => a = 10
条件に応じて値を設定する必要があり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の三項演算子をサポートしていません。これがコーヒースクリプトの作者からの理由です:
私は次の人と同じくらい(おそらく実際にはもう少し)三項演算子が大好きですが、構文はそれらを良くするものではありません-それらは1行にif/elseを表現。
それらの構文は、覚えておくべきもう1つの神秘的な魔法であり、この言語の他の言語に類似したものはありません。結果が等しいので、私はむしろ
if/elses
常に同じように見える(そして常に式にコンパイルされる)ことを望んでいます。したがって、CoffeeScriptでは、else句のないifステートメントと同様に、複数行のifでも適切な場合に3項にコンパイルされます。
if sunny go_outside() else read_a_book(). if sunny then go_outside() else read_a_book()
どちらも3値になり、どちらも式として使用できます。それは一貫していて、学ぶべき新しい構文はありません。それで、提案に感謝します、しかし私はこのチケットを「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
それははるかに明確です。
quotesBroの回答に似ていますが、then
キーワードはありません。これは、通常の複数行のifステートメントを使用するバージョンです。私にとって、これはうまくフォーマットされています。
この通常のifステートメントを検討してください
if true
# do stuff
else
# do stuff
次に、それを割り当てに使用します(ここでも、then
キーワードなしで)
value = if true
5
else
10
value = if false
5
else
10
これは、通常の3値としてjavascriptにコンパイルされます
value = true ? 5 : 10;
value = false ? 5 : 10;