在 AWK 中,为了对数组进行排序,我可以定义自己的排序函数,既可以在 for 循环中控制数组的遍历,也可以调用asort
或asorti
。比较函数的签名最多接受 6 个参数,但最后两个参数是可选的:
function cmp_field(i1, v1, i2, v2, l, r) { whatever; }
l
和的用途是什么r
?据我所知,它们只是占位符,AWK 根本不使用或检查它们,而是为了我自己方便,以便我可以在它们内部存储值,作为某种便利辅助变量。例如分配l
和从和r
计算出的临时值。但是,为什么我需要它们或它们的用途是什么,如果我可以像这样声明自己的变量:v1
v2
function cmp_field(i1, v1, i2, v2) {
l = computation(v1);
r = computation(v2);
whatever;
}
l
除了第二个例子中的全局变量之外,还有其他区别吗r
?或者除此之外还有其他原因吗?