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
Generics 在科特林,您如何判断“是否:&引用;是指扩展还是返回?_Generics_Kotlin - Fatal编程技术网

Generics 在科特林,您如何判断“是否:&引用;是指扩展还是返回?

Generics 在科特林,您如何判断“是否:&引用;是指扩展还是返回?,generics,kotlin,Generics,Kotlin,Java在这一点上更为明确,但在学习Kotlin时,是否有一条经验法则,让它知道什么时候:表示它正在返回某个内容,而不是它正在扩展一个类 例如: data class SlothGeneric( val slothName: String, val isTwoFingered: Boolean, var slothWeight: Int ): Mammal(slothName) 我们如何知道这个类SlothGeneric是在返回一个哺乳动物类,还是在扩展它?类不能返回任

Java在这一点上更为明确,但在学习Kotlin时,是否有一条经验法则,让它知道什么时候
表示它正在返回某个内容,而不是它正在扩展一个类

例如:

data class SlothGeneric(
    val slothName: String,
    val isTwoFingered: Boolean,
    var slothWeight: Int
): Mammal(slothName)

我们如何知道这个类
SlothGeneric
是在返回一个
哺乳动物类,还是在扩展它?

类不能返回任何东西(只有它们的函数可以),所以当你在类定义上看到分号
时,它意味着
扩展了
/
实现了


另一方面,函数不能扩展或实现任何内容,但可以具有返回类型,因此分号
表示函数定义中的返回类型

如果代码遵循默认的Kotlin编码样式,则可以通过冒号周围的空格看出扩展类型和指定声明类型之间的区别:

  • 如果
    将声明(属性或函数)与其类型分开,则

    fun Mammal.giveBirth(): Mammal
    
  • 如果
    将类型与其超类型分开,
    前面应该有一个空格
    class Sloth : Mammal
    

它的意思是“类型的”,如“哺乳动物类型的数据类SlothGeneric”、“Double类型的函数sin”、“SlothGeneric类型的值sloth”等。快速浏览一下类,括号“()”表示扩展(继承),没有括号表示实现(接口)。函数的返回类型上从来没有括号。