无法转换为集合中科特林
答
在else
分支,你不返回任何东西,这意味着你返回Unit
单身。 Unit
不是Token
的子类型。因此,Kotlin编译器需要Unit
和Token
共享父类:Any
(Kotlin的基类,与Java中的Object
类似)。
而不是返回Unit
,你应该在else分支上抛出Exception来向编译器发出它不能发生的信号。
但是,如果你只是想忽略多余的字符。您可以在else分支返回null,并使用mapNotNull
过滤:
toParse.mapNotNull { ... }.toCollection(LinkedList<Token>())
此外,您还可以使用mapNotNullTo
结合toCollection
和map
电话:
toParse.mapNotNullTo(LinkedList<Token>()) { ... }
答
好吧,我想通了,何时有返回类型Any,因为else分支返回Unit,而其他分支Token。所以intellij试图告诉我,这是类型不匹配错误
请发表您的代码文字(+错误信息)不作为截图。其他人无法搜索文字 –