Kotlin平台类型和泛型
我被困在最后一个任务28中,当我尝试调用我的partitionTo函数时,我会收到以下错误消息:Kotlin平台类型和泛型,kotlin,Kotlin,我被困在最后一个任务28中,当我尝试调用我的partitionTo函数时,我会收到以下错误消息: Error:(25, 12) Kotlin: Type inference failed. Expected type mismatch: found: kotlin.Pair<kotlin.Collection<kotlin.String!>, kotlin.Collection<kotlin.String!>> required: kotlin.Pair<
Error:(25, 12) Kotlin: Type inference failed. Expected type mismatch: found: kotlin.Pair<kotlin.Collection<kotlin.String!>, kotlin.Collection<kotlin.String!>> required: kotlin.Pair<kotlin.List<kotlin.String>, kotlin.List<kotlin.String>>
Error:(30, 12) Kotlin: Type inference failed. Expected type mismatch: found: kotlin.Pair<kotlin.Collection<kotlin.Char!>, kotlin.Collection<kotlin.Char!>> required: kotlin.Pair<kotlin.Set<kotlin.Char>, kotlin.Set<kotlin.Char>>
检查返回类型
partitionWordsAndLines():**Pair,List>**
,扩展需要List
或Set
,其中partitionTo
返回Collection
这是固定版本
inline fun Collection.partitionTo(第一个:C,第二个:C,谓词:(T)->布尔):Pair
问题是您承诺返回一对列表
s:
fun List<String>.partitionWordsAndLines(): Pair<List<String>, List<String>> {
任务中的有用提示:
The signature of the function 'toCollection()' from standard library may help you.
请看这里:
另外,为什么要在
partitionTo
上使用inline
和reified
?不幸的是,在您的示例中,所有尖括号及其大部分内容都丢失了。你能把它们放回去或在其他地方共享相同的代码吗(例如,或)?我正在试验内联
和具体化
,这显然没有帮助:),但我仍然不确定为什么这不起作用有趣的集合:Pair
当它工作时fun Collection.partitionTo(first:C,second:C,predicate:(T)->Boolean):Pair
这两者之间有什么区别?@mellow,当您返回C
时,类型推断将实参的类型指定给C
,即实际结果是Pair
,这是Pair
的一个子类型。当你使用MutableCollection
时,你得到的只是MutableCollection
,因为它不是一个类型变量,类型推断也帮不了你,而且MutableCollection
也不是List
的子类型
inline fun <reified T> Collection<T>.partitionTo(...): Pair<Collection<T>, Collection<T>> {
The signature of the function 'toCollection()' from standard library may help you.