1

これは Jamis Buck の Minecraft Generator のコード スニペットです。this.depth は 1 から 10 までの値です。 for ループは理解できます。三項演算子を理解しています。これを評価する方法がわかりません。

for (z = 1, _ref = this.depth; 1 <= _ref ? z <= _ref : z >= _ref; 1 <= _ref ? z++ : z--)

私には、 _ref !< 1 である限り、このように見えます。

for (z = 1, _ref = this.depth;; 1 <= _ref ? z++ : z--)

私は何が欠けていますか?よろしくお願いします。私はこのサイトから多くのことを学んできましたが、投稿する必要があるのはこれが初めてです。

4

1 に答える 1

3

ループを解析する正しい方法は次のとおりです。

for (
    z = 1, _ref = this.depth; 
    (1 <= _ref ? z <= _ref : z >= _ref);
    (1 <= _ref ? z++ : z--)
)

_ref < 1 の場合、_ref が変更されていないと仮定すると、ループは次のようになります。

for (
    z = 1, _ref = this.depth; 
    z >= _ref; 
    z--
)

_ref >= 1 の場合、_ref が変更されていないと仮定すると、ループは次のようになります。

for (
    z = 1, _ref = this.depth; 
    z <= _ref; 
    z++
)

どちらの場合も、リダクションは_refが変更されていないことを前提としていることに注意してください。ループが変更_refされると、リダクションの仮定が崩れます。

于 2013-10-12T03:02:27.887 に答える