无法转换为kotlin中的集合
我试图将列表转换为kotlin中的LinkedList,这里是我的代码与intellij错误
但是在Kotlin REPL,我可以做这样的事情
我的代码有什么问题?
在else
分支中,你不返回任何东西,这意味着你返回Unit
单例。 Unit
不是Token
的子类型。 因此,Kotlin编译器使用Unit
和Token
共享父类: Any
(Kotlin的基类,类似于Java中的Object
)。
而不是返回Unit
,你应该在else分支上抛出异常,向编译器发出它不能发生的信号。
但是,如果您只想忽略多余的字符。 你可以在else分支上返回null,并使用mapNotNull
来过滤:
toParse.mapNotNull { ... }.toCollection(LinkedList<Token>())
另外,您可以使用mapNotNullTo
将toCollection
和map
调用组合起来:
toParse.mapNotNullTo(LinkedList<Token>()) { ... }
好吧,我想通了,什么时候有返回类型Any,因为else分支返回Unit,而其他分支Token。 所以intellij试图告诉我,这是类型不匹配的错误