awk:ループ変数の命名のベストプラクティス[閉じる]

awk:ループ変数の命名のベストプラクティス[閉じる]

次のコードは無限ループを生成します。 アッ{ … }範囲内のローカル変数はサポートされていません。

#! /usr/bin/gawk -f

function myfunction() {
    for (i = 5; i < 8; i++){
        print "in myfunction(), i="i
    }
}

BEGIN {
    for (i = 0; i < 10; i++) {
        myfunction();
        print i;
    }
}

この問題を解決する方法は2つあります。

  1. ループ変数をiパラメータとして宣言例えば myfunction( i)

ノート前の余白はiコーディング規則であり、パラメータでiはなくローカル変数であることを示します。

  1. 「衝突」を防ぐには、命名規則を使用してください。例えば _module_begin_loop_module_myfunction_loop

myfunction()ループ内で必ずしも呼び出されるわけではないので、ループ変数を使用する最初の解決策は非常にトリッキーであることがわかりました。 2番目のケースでは、名前が長すぎて読みやすくなる可能性があります。

ベストアンサー1

この質問を準備しながら答えを見つけました。他の答えも歓迎します。

大きいアッ次のプロジェクト翻訳シェル最初の回避策を使用してください。

function parseList(returnAST, tokens,
                   leftBrackets,
                   rightBrackets,
                   separators,
                   ####
                   i, j, key, p, stack, token) {
   ...
}

次のパラメータは####ローカルです。

アッparseList(ast, tokens)あるいは、より少ない数の引数で関数を呼び出すこともできますparseList(ast, tokens, lb, rb, sep)。したがって、署名だけが複雑です。

おすすめ記事