我目前遇到的情况是,我有几个数据类(
Script
和 FreeScript
),我想在遍历数据集的某些代码中以相同的方式处理它们。例如:
fun toScripts(parseScript: () -> (Script)): List<Script> {
val result: MutableList<Script> = mutableListOf()
while (findNextTag("tr") != null) {
result.add(parseScript(elementsContainer))
}
return result
}
fun toFreeScripts(parseFreeScript: () -> (FreeScript)): List<FreeScript> {
val result: MutableList<FreeScript> = mutableListOf()
while (findNextTag("tr") != null) {
result.add(parseFreeScript(elementsContainer))
}
return result
}
这些方法之间的唯一区别是它们采用产生不同结果类型的函数,并构造该结果类型的列表。这似乎是使用泛型的一个很好的候选者,但我似乎无法使用正确的声明语法。
请问有好心人可以帮帮我吗?
感谢@broot 在正确的方向上的推动。正确的声明是:
fun <T> toScripts(parseScript: () -> T): List<T> {
val result: MutableList<T> = mutableListOf()
while (findNextTag("tr") != null) {
result.add(parseScript(elementsContainer))
}
return result
}