0

次の配列割り当てがあります。

advances = if advance == 0 then [advance] else [advance, (0 - advance)]

これを行うためのもっとコーヒースクリプトの方法があるのだろうか?

4

3 に答える 3

1

どうですか:

advances = [advance]
advances.push (0 - advance) if advance != 0

これはもう少し読みやすいと思います。しかし、それは好みの問題だと思います。また、coffee-script の優れた if-at-the-end 機能も使用しています。これにより、この「条件付き配列の成長」などのステートメントが読みやすくなります (少なくとも私にとっては)。

PS:ステートメントを避けるために to== 0も変更しました。コードを読むときに混乱するだけです。!= 0unless

PPS: ためだけにすべてを 1 行にまとめないでください (コーヒー スクリプトがそれを得意としても)。最も読みやすい (そしてパフォーマンスの良い) コードを常に考えてください。

于 2012-12-14T15:32:45.923 に答える
0

リスト内包表記について考えているかもしれませんが、ここでそれらをどのように利用するか想像できません。underscore.js (またはコレクション ユーティリティを提供する他のライブラリ) を使用すると、より良い結果が得られると思います。

advances = _.uniq([advance, (0 - advance)])

http://underscorejs.org/#uniq

于 2012-12-14T15:01:49.603 に答える
0

あなた自身の提案はまったく問題ないと思います。シンプルで明確、そして純粋に機能的です。

句読点を最小限に抑えることがcoffeescriptの方法の一部であると思われる場合は、括弧を削除できます

advances = if advance == 0 then [advance] else [advance, 0 - advance]
于 2012-12-14T19:00:43.850 に答える