Coffeescript ツリーの実装における予期しない動作について質問があり、誰か助けていただけないでしょうか。問題は間違った「この」コンテキストに関係していると思いますが、それを解決するために太い矢印をどこに置くべきかわかりません。おそらく、私が動作を説明できるよりもコーヒースクリプトをよく知っている人でしょうか?
class Node
uuid: undefined
constructor: (@uuid) ->
class MultiNode extends Node
branches: {}
constructor: (args...) ->
super(args...)
print: (str = '') ->
console.log "#{str}Multiway<#{@uuid}>"
for value,node of @branches
if node?
node.print "#{str} "
class LeafNode extends Node
value: undefined
constructor: (@value, args...) ->
super(args...)
print: (str = '') ->
console.log "#{str}Leaf<#{@uuid}>: #{@value}"
tree = new MultiNode(1)
subtree1 = new MultiNode(2)
subtree1.branches["aa"] = new LeafNode("three",3)
subtree1.branches["ab"] = new LeafNode("four",4)
tree.branches["a"] = subtree1
subtree2 = new MultiNode(5)
subtree2.branches["ba"] = new LeafNode("six",6)
subtree2.branches["bb"] = new LeafNode("seven",7)
tree.branches["b"] = subtree2
tree.print()
これは無限に再帰します。これは、「印刷」のコンテキストが、サブノード オブジェクトのコンテキストに意図したとおりに設定されていないためだと思います。ガイダンスをいただければ幸いです。
D.