Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin文档是否正确?_Kotlin - Fatal编程技术网

Kotlin文档是否正确?

Kotlin文档是否正确?,kotlin,Kotlin,代码(如下所示)正确吗?它取自Kotlin-docs.pdf的第63页,这也是 fun cloneWhenGreater(列表:列表,阈值:T):列表 式中T:可比,T:可克隆{ return list.filter{it>threshold}.map{it.clone()} } 按原样执行,编译器会出现以下故障: 1. kotlin中定义的可比较接口需要一个类型参数 2. 类型推断失败。预期类型不匹配:推断类型为列表,但预期为列表 3. 无法访问“克隆”:它在“可克隆”中受保护。 通过将代码

代码(如下所示)正确吗?它取自Kotlin-docs.pdf的第63页,这也是

fun cloneWhenGreater(列表:列表,阈值:T):列表
式中T:可比,T:可克隆{
return list.filter{it>threshold}.map{it.clone()}
}
按原样执行,编译器会出现以下故障: 1. kotlin中定义的可比较接口需要一个类型参数 2. 类型推断失败。预期类型不匹配:推断类型为列表,但预期为列表 3. 无法访问“克隆”:它在“可克隆”中受保护。

通过将代码更改为以下内容,可以轻松解决前两个错误:

 fun <T> cloneWhenGreater(list: List<T>, threshold: T): List<Any>
        where T : Comparable<in T>, T : Cloneable {
    return list.filter { it > threshold }.map { it.clone() }
}
fun cloneWhenGreater(列表:列表,阈值:T):列表
式中T:可比,T:可克隆{
return list.filter{it>threshold}.map{it.clone()}
}
我仍然得到以下错误: 无法访问“克隆”:它在“可克隆”中受保护。

我正在使用Kotlin 1.1.2-release-IJ2017.1-1

我错过什么了吗?还是文档中有错误

谢谢。

it.clone()
返回
Any
,您将得到错误强制列表。 所以,您已将其更改为列表

您的下一个错误是无法访问克隆:它在克隆中受保护


这个问题可以通过使用公共方法创建我们自己的可克隆接口来解决。

文档似乎确实是错误的。你应该提交一个bug:这个特定的bug被剪掉了,而且只有一次被修改过,一次修改使它更糟。也许当时它确实编译过,但当时Kotlin仍处于快速开发阶段。谢谢!提交了一个bug()。将相应更新。
 fun <T> cloneWhenGreater(list: List<T>, threshold: T): List<Any>
        where T : Comparable<in T>, T : Cloneable {
    return list.filter { it > threshold }.map { it.clone() }
}