web-dev-qa-db-ja.com

Coffeescriptの条件演算子

私は本当にこれが好きです:

var value = maxValue > minValue ? minValue : maxValue;

Coffeescriptにも同様に簡潔なものはありますか?

69
Blub
value = if maxValue > minValue then minValue else maxValue
132
Tim Cooper

Javascriptとcoffeescriptの両方にmore簡潔なオプションがあります:)

value = Math.min(minValue, maxValue)
21
Ricardo Tomasi

RăzvanPandaが指摘しているように、私のコメントは実際には良い答えの1つかもしれません。

value = `maxValue > minValue ? minValue : maxValue`
12
Peter Krnjevic

これは、CoffeeScriptが競合する哲学を持っているように感じる場合です。

  1. 簡潔にする
  2. 冗長になるな

すべての操作が結果を返すため、if/then/elseの方法で必要なものが得られます。 ?/:演算子の追加は冗長です。

これは、冗長であるにもかかわらず、?/:三項演算子を提供したいところです... if/then/elseバリアントよりも読みやすいです。

ちょうど私の2c。

10
Brian Genisio

次のように書くことができます:

value = if maxValue > minValue then minValue else maxValue

コードのようにコンパイルされます。

3
v42

以下は事実です。

ドキュメントには、「Conditionals、Ternaries、およびConditional Assignment」というタイトルのセクションがあります。これは、coffeescriptがサポートすると信じる人を導きます

condition ? when-true : when-false 

しかし、実際にはそうではありません。

以下は、この問題を解決するパッチに関する情報です

パッチは次のとおりです(そしてcoffeescript.orgにプッシュされます):

http://github.com/jashkenas/coffee-script/commit/ec2d358ae3c82e9888c60695d7cce05edde0c55a

例:

mood = greatlyImproved if singing

if happy and knowsIt
  clapsHands()
  chaChaCha()
else
  showIt()

date = if friday then sue else jill

options or= defaults
3
Siva Charan