2

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.

4

1 に答える 1