我有这个功能(将WGS84大地水准面的坐标转换为笛卡尔坐标......无所谓):
function convert_geo_to_enu(coord_geo) { \
xi=sqrt(1 - e*e*sin(coord_geo[1])*sin(coord_geo[2])); \
\
coord_enu[1]=(a/xi + coord_geo[3])*cos(coord_geo[1])*cos(coord_geo[2]); \
print coord_enu[1] " hhh " ; \
coord_enu[2]=(a/xi + coord_geo[3])*cos(coord_geo[1])*sin(coord_geo[2]); \
coord_enu[3]=(a*(1-e*e)/xi0 + coord_geo[3])*sin(coord_geo[1]); \
\
return coord_enu \ # <-- here comes the problem
} \
problem --> mawk: line 64: illegal reference to array coord_enu
作为数组返回有什么问题?有没有不同的语法?
我可以使用:
function convert_geo_to_enu(coord_geo, coord_enu) { \
...
coord_enu[1]=...
...
} \
甚至:
function convert_geo_to_enu(coord_geo) { \
...
coord_enu[1]=...
...
} \
然后只使用变量coord_enu
作为全局变量?
但使用return语句(特别是对我而言)看起来更好
答案 0 :(得分:11)
有点晚了,但这是我用过的解决方案:
我发送了一个我想填充的变量作为函数的参数:
function myfunct(result, array_size) {
for(i = 1; i <= array_size; i++) {
result[i] = ##whatever you want
}
}
然后,您可以将结果变量视为函数
之外的数组希望这有助于寻找答案的人
答案 1 :(得分:10)
将数组视为全局数组。 AWK无法返回数组。