Как отображать данные с использованием дерева дерева TornadoFX

Я изучаю, как использовать kotlin и начал использовать tornadoFX. Я прохожу через гида, пытаясь его изучить, однако я не могу понять, что имеется в виду в «TreeView с различными типами». Кажется, что я должен использовать звездную проекцию, которая, как я знаю, когда вы используете * в вызове.

Однако, как только я это сделаю, treeview говорит, что «Прогнозы не допускаются для аргументов типа функций и свойств»,

Это мой код:

класс MainView: View ("") {

override val root = treeview<*> { root = TreeItem(Person("Departments", "")) cellFormat { text = when (it) { is String -> it is Department -> it.name is Person -> it.name else -> throw IllegalArgumentException("Invalid Data Type") } } populate { parent -> val value = parent.value if (parent == root) departments else if (value is Department) persons.filter { it.department == value.name } else null } } } 

Я честно тупик, я не знаю, что я должен делать.

Кроме того, если бы кто-нибудь еще мог предоставить мне некоторые полезные ссылки для изучения как Kotlin, так и tornadoFX, было бы очень благодарно 🙂

Кажется, руководство действительно неверно. Я получил его, используя treeview<Any> :

 data class Department(val name: String) data class Person(val name: String, val department: String) val persons = listOf( Person("Mary Hanes", "Marketing"), Person("Steve Folley", "Customer Service"), Person("John Ramsy", "IT Help Desk"), Person("Erlick Foyes", "Customer Service"), Person("Erin James", "Marketing"), Person("Jacob Mays", "IT Help Desk"), Person("Larry Cable", "Customer Service") ) val departments = persons.groupBy { Department(it.department) } override val root = treeview<Any> { root = TreeItem("Departments") cellFormat { text = when (it) { is String -> it is Department -> it.name is Person -> it.name else -> kotlin.error("Invalid value type") } } populate { parent -> val value = parent.value when { parent == root -> departments.keys value is Department -> departments[value] else -> null } } }