проблема awk (возвращает массив из пользовательской функции)
у меня есть эта функция (преобразование координаты геоида 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 (esp. для меня)
2 ответов
немного поздно, но вот решение я использовал:
Я отправил переменную, которую я хотел заполнить в качестве параметра функции:
function myfunct(result, array_size) {
for(i = 1; i <= array_size; i++) {
result[i] = ##whatever you want
}
}
тогда вы можете рассматривать переменную результата как массив вне функции
надеюсь, это поможет кому-то искать ответ