この表現が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]
rec
records