私は coffescript でいくつかのアルゴリズムをいじっていましたが、予期しない出力が得られました。これが私のコードです:
traverse = (tree, stack) ->
stack.push tree.node
if not tree.branches
stack
else
traverse branch, stack for branch in tree.branches
one = { node: 1 }
two = { node: 2 }
tree = { node: "+", branches: [one, two] }
console.log traverse one, [] # => [ 1 ]
console.log traverse two, [] # => [ 2 ]
console.log traverse tree, [] # => [ [ '+', 1, 2 ], [ '+', 1, 2 ] ]
トラバース中に得られると予想される出力は次のとおりtree
です[ '+', 1, 2 ]
が、これは複製されます。ここで簡単なことを見逃しましたか?
ありがとう。