선택적 함수 인수(스칼라) 감지

선택적 함수 인수(스칼라) 감지

다음 스크립트를 고려해보세요.

function alfa(bravo, charlie) {
  if (charlie)
    return "charlie good"
  else {
    return "charlie bad"
  }
}
BEGIN {
  print alfa(1, 1)
  print alfa(1, 0)
  print alfa(1, "")
  print alfa(1)
}

결과:

charlie good
charlie bad
charlie bad
charlie bad

매개변수가 제공되지 않은 경우 Awk에서 이를 알 수 있는 방법이 있나요?

답변1

예, 다음과 같이 할 수 있습니다.

function alfa(bravo, charlie) {  
  if (charlie) {
    return "charlie good"
  }
  if (charlie == 0 && charlie == "") {
    return "charlie not provided"
  }
  if (!charlie && charlie != 0) {
    return "charlie null"
  }
  if (!charlie && charlie != "") {
    return "charlie 0"
  }
}

결과:

charlie good
charlie 0
charlie null
charlie not provided

답변2

awk변수가 초기화되었는지 확인하는 기본 제공 방법은 없습니다. 당신은 스스로 그것을 해야 합니다:

function alfa(bravo, charlie) {
  if (charlie == 0 && !length(charlie))
    return "charlie bad"
  else {
    return "charlie good"
  }
}
BEGIN {
  print alfa(1, 1)
  print alfa(1, 0)
  print alfa(1, "")
  print alfa(1)
}

일반적인 방법:

var == 0 && !length(var)

초기화되지 않은 변수와 0은 제외될 때 사례가 var == 0true로 평가되도록 합니다 .!length(var)var = 0

관련 정보