それがCoffeeScriptに存在する場合にのみ、変数から値を代入する最も簡潔な方法は?



スプーン と 元素 周期 表 (3)

あなたは言えた:

a = b ? a

たとえば、

a = 11
a = b ? a
console.log(a)
b = 23
a = b ? a
console.log(a)​

1123をコンソールに表示します(デモ: http://jsfiddle.net/ambiguous/ngtEE/ : http://jsfiddle.net/ambiguous/ngtEE/

誰かが以下を達成するためのより簡潔でエレガントな方法を知っていますか?

A = B if B?

ありがとう。

編集:

私はAとBを一度だけ参照する解決策を探しています。 そしてコンパイルするだろう
if (typeof B !== "undefined" && B !== null) { A = B; }
または他の何か似たような。

これを短くすることは、以下をもう少し読みやすくするのに役立ちます。
someObject[someAttribute] = (someOtherObject[someOtherAttribute] if someOtherObject[someOtherAttribute]?)
それが私の質問の動機です。


多分次のようになります。

A=_ if (_=B)?

展開しました:

if ((_ = B) != null) {
  A = _;
}

これはAをBにあるもので上書きしますが、それがnullでない場合に限り、両方を一度だけ参照します。


Coffee Scriptについてはよくわかりませんが、通常のJavaScriptではOR演算子を使用できます。

a = b || a





coffeescript