2

ブール条件を使用せずにループを最適化して、ループが中断せずに正常に終了した場合に何らかのアクションを実行するかどうかを確認しようとしています。Python では、次のように記述します。

for x in lst:
    if cond(x):
       do_stuff_with(x)
       break
else:
    do_other_stuff()

Coffeescript で私が考えることができる最善の方法は、次のようなことです。

found = false
for x in lst
    if cond x
        found = true
        do_stuff_with x
        break
if not found
    do_other_stuff()

この状況に対応する Coffeescript のイディオムはありますか?

4

1 に答える 1

3

この特定の使用法では、EcmaScript 6.find関数を使用できます。EcmaScript 6 をサポートしていないブラウザーと互換性を持たせたい場合は、Underscore.js にも同様の方法があります。

result = lst.find cond
if result?
  do_stuff_with result
else
  do_other_stuff()

ただし、for elsePython の loop を直接置き換えるものはありません。一般に、状態を保存するにはブール値を宣言する必要があります。

于 2013-12-31T16:54:51.833 に答える