このような配列があります...
a["a"] = "aa"
a["b"] = "ab"
a["c"] = "ac"
a["d"]["a"] = "ada"
a["d"]["b"]["a"] = "adba"
a["e"]["a"]["a"]["a"] = "aeaaa"
...複製したい
clone(b, a)
これまでに試したことは次のとおりです。
function clone(lhs, rhs){
for (i in rhs) {
if (typeof(arr[i]) == "array"){
clone(lhs[i], rhs[i])
} else {
lhs[i] = rhs[i]
}
}
}
b["d"]
ただし、これは割り当て前に作成されなかったため、明らかには機能しません。 2番目の質問は、として入力する必要があることです。a["d"]["a"]
b["d"]["a"]
b["d"]
array
答え1
複製する前にサブアレイを初期化する必要があります。
function clone(lhs, rhs) {
for (i in rhs) {
if (isarray(rhs[i])) {
lhs[i][1] = ""
delete lhs[i][1]
clone(lhs[i], rhs[i])
} else {
lhs[i] = rhs[i]
}
}
}
マニュアルページには、値を書き込んで削除する方法が記載されていますgawk
。
(私は固定配列検出も使用しましたisarray
。)