CoffeeScriptでは、while
ループが標準装備されています。
while x()
y()
ただし、次の1 動作しません:
do
y()
while x()
そして、これは最初の例の単なる砂糖です:
y() while x()
CoffeeScriptには、少なくとも1回実行される組み込みループが付属していますか?
1余談ですが、do
isキーワード—匿名関数を呼び出すために使用されます。
CoffeeScriptのドキュメントには次のように書かれています:
CoffeeScriptが提供する唯一の低レベルループは、whileループです。
少なくとも1回実行される組み込みループがわからないので、代替手段は
loop
y()
break if x()
私はこの答えが非常に古いことを知っていますが、Google経由でここに入ったので、他の誰かも同じように思った。
CoffeeScriptで同等のdo ... whileループを構築するには、この構文が最良かつ最も簡単で、非常に読みやすいとエミュレートすると思います。
while true
# actions here
break unless # conditions here
あなたの推測は正しい:CoffeeScriptにはdo-while
に相当するものはありません。だからあなたは通常書くだろう
y()
y() while x()
これを頻繁に行うことに気付いた場合は、ヘルパー関数を定義できます。
doWhile = (func, condition) ->
func()
func() while condition()
私はこれが短絡条件付きで達成できることを発見しました:
flag = y() while not flag? or x()
ループの最後に条件を強制的に評価し、最初に終了するプロジェクトに取り組んでいます。
# set the 'do' variable to pass the first time
do = true
while do
# run your intended code
x()
# evaluate condition at the end of
# the while code block
do = condition
# continue code
それほどエレガントではありませんが、whileコードブロックのためだけに新しい関数を定義して、それを2回実行することはできません。一般にdo ... whileステートメントをコード化する方法がありますが、その間は簡単な解決策はありません。