谁能告诉我这个表达式在 awk 中意味着什么?
records[rec] = (rec in records) ? records[rec] : func(rec)
答案1
rec in records
rec
如果已使用,则计算为真值作为关联数组中的索引records
,否则为假。
(rec in records) ? records[rec] : func(rec)
用途三元运算符,并评估为records[rec]
(rec
与in相关的值records
) 如果存在这样的值,或者func(rec)
否则的结果。
records[rec] = (rec in records) ? records[rec] : func(rec)
将结果存储在records[rec]
.
这相当于
if (!(rec in records)) records[rec] = func(rec)
但如果该值已经存在,则不进行赋值;IE,如果中不存在索引,则存储func(rec)
in的结果。records[rec]
rec
records