14

私はこの機能を持っています(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ステートメントを使用すると見栄えが良くなります(特に私にとっては)

4

2 に答える 2

21

少し遅れましたが、これが私が使用した解決策です:

パラメータとして入力したい変数を関数に送信しました。

function myfunct(result, array_size) {
    for(i = 1; i <= array_size; i++) {
        result[i] = ##whatever you want
    }
}

次に、結果変数を関数外の配列として扱うことができます

これが答えを探している人に役立つことを願っています

于 2013-03-22T12:52:03.230 に答える
14

配列をグローバルとして扱います。AWKは配列を返すことができません。

于 2012-09-10T10:58:07.683 に答える