awk의 " records[rec] = (rec in records) ? records[rec] : func(rec) " 명령은 무엇을 의미합니까?

awk의 " records[rec] = (rec in records) ? records[rec] : func(rec) " 명령은 무엇을 의미합니까?

이 표현이 awk에서 무엇을 의미하는지 말해 줄 수 있는 사람이 있나요?

records[rec] = (rec in records) ? records[rec] : func(rec)

답변1

rec in records

rec사용되면 true로 평가됩니다.연관 배열의 인덱스로records, 그렇지 않으면 거짓입니다.

(rec in records) ? records[rec] : func(rec)

사용삼항 연산자, 그리고 다음과 같이 평가됩니다 records[rec](rec와 연관된 값records) 그러한 값이 존재하는 경우, 그렇지 func(rec)않은 경우 결과입니다.

records[rec] = (rec in records) ? records[rec] : func(rec)

결과를 에 저장합니다 records[rec].

이는 다음과 같습니다.

if (!(rec in records)) records[rec] = func(rec)

그러나 값이 이미 존재하는 경우 할당이 수행되지 않습니다., 인덱스가 존재하지 않으면 func(rec)in 의 결과가 저장됩니다.records[rec]recrecords

관련 정보