2

ハッシュを関数に渡す正しい/慣用的な方法は何ですか?

私はこれを思いつきましたが、これがどれほどきれいか、または落とし穴があるかどうかはわかりません。

typeset -A hash
hash=(a sometext b moretext)

foo hash

foo() {
  typeset -A mhash
  mhash=( ${(Pkv)1} )
}

P フラグは結果を解釈します (この場合、$1 はパラメーター名を保持していると見なされます)。これはキーではなく値のみを取得する結果となったため、キーと値の両方を取得するために「kv」を追加しました。

これが正しい方法ですか、それとも別の方法がありますか。ところで、私は実際のプログラムで配列とハッシュを渡しているので、「$*」や「$@」は使いたくありません。

4

1 に答える 1

1

少し試してみましたが、関数で $@ を使用する以外の方法があるかどうかわかりません。

Re: パラメータとしての配列 - Zshメーリングリスト

これらの質問に対する可能な回答 (bash 指向):
How to pass a associative array as argument to a function in Bash?
bashで配列をパラメータとして
渡すシェルスクリプトの関数に配列を渡す

実際、シェル スクリプトで配列、さらに悪いことに連想配列を使用する必要が生じ始めた場合は、perl や python などのより強力なスクリプト言語に切り替える時期かもしれません。
あなたが代わりにやらないなら、今から 6 か月後のあなたのために / 後継者のためにやってください。

于 2013-01-15T14:41:59.053 に答える