私はこのような配列を持っています...
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
サブアレイにクローンを作成する前に、サブアレイを初期化する必要があります。
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]
}
}
}
write-value-then-delete itのトリックは、gawk
manページに記載されています。
(また、を使用して配列検出を修正しましたisarray
。)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加