我用Kotlin編寫XML DSL並遇到問題。代碼:Kotlin的toString遞歸問題
abstract class Element(val name: String) {
var children = mutableListOf<Element>()
override fun toString() = """
<$name>
${children.joinToString("\n") { toString() }}
</$name>
""".trimIndent()
}
我已經{ toString() }
以下錯誤:
類型檢查,又碰上一個遞歸問題。最簡單的解決方法:明確指定聲明的類型。
我需要以下的輸出:
<a>
<b>
</b>
<c>
</c>
</a>
如果我有以下代碼:
fun main(args: Array<String>) {
val a = Element("a")
a.children.add(Element("b"))
a.children.add(Element("c"))
println(a)
}
我怎樣才能解決這個問題?
謝謝!現在我有'StackOverflowError',但我認爲這是另一回事;) – Feeco