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;
    }
}

이 문제를 해결하는 방법에는 두 가지가 있습니다.

  1. 루프 변수를 i매개변수로 선언,예를 들어 myfunction( i).

노트앞의 추가 공백은 i코딩 규칙이며 i매개변수가 아닌 지역 변수임을 나타냅니다..

  1. "충돌"을 방지하려면 명명 규칙을 사용하세요.,예를 들어 _module_begin_loop, _module_myfunction_loop.

myfunction()루프 내에서 반드시 호출되지는 않기 때문에 루프 변수를 사용하는 첫 번째 솔루션이 매우 까다롭다는 것을 알았습니다 . 두 번째 경우에는 이름이 너무 길어져서 가독성이 떨어질 수 있습니다.

답변1

이 질문을 준비하면서 답을 찾았습니다. 다른 답변도 환영합니다.

더 큰다음과 같은 프로젝트번역 쉘첫 번째 해결 방법을 사용하세요.

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

다음 매개변수는 ####로컬입니다.

parseList(ast, tokens)또는 같은 더 적은 수의 인수로 함수를 호출할 수 있습니다 parseList(ast, tokens, lb, rb, sep). 따라서 서명만 복잡합니다.

관련 정보