0

coffeescript に移植する RPC ライブラリがあります。実行する必要があることの 1 つは、関数呼び出しパラメーターを並べ替えて、それらが正しい順序になっていることを確認することです。これを行うために、次のような「配列内包表記」を作成しました。

argValues = for param in paramNames
                if param of args
                    args[param]
                else if param isnt 'cb'
                    throw new Error "Missing argument for paramater '#{param}' of procedure '#{func}'"
        argValues[-1..-1] = cb

「cb」パラメータは、コールバックを介して結果を提供するために、すべてのリモート プロシージャによって使用されます。クライアントはこのコールバックを提供しないため、これは内包表記でスキップする必要があります (サーバーは、結果をエンコードしてクライアントに返すために書き込むことができるようにするためです)。私の問題は、理解がこれに対して「未定義」の値を入れていることです。そのため、不格好な[-1..-1]構文を使用して未定義をコールバックに置き換える必要があります。私がやりたいのは、それをスキップしてargValues.push cb.

このような値を理解してスキップさせる方法はありますか?

4

1 に答える 1

1

whenループで使用できる句がありますが、細かいマニュアルにはいくつかの例にしか含まれていません。whenループ本体が実行される前に、ループ変数に条件を適用できます。

param含まれていない sをスキップする場合はargs

for param in paramNames when param !of args
    args[param]
于 2014-04-18T16:33:46.833 に答える