在Kotlin中,如何判断“:”是扩展还是返回?

时间:2019-04-26 18:36:42

标签: generics kotlin

Java在此方面更为明确,因此初学者更容易理解代码在做什么,但是学习Kotlin知道何时时是否有经验法则:表示它正在返回某些内容,而什么时候扩展课程?例如:

数据类SlothGeneric(val slothName:字符串,                         val isTwoFingered:布尔值,                         var slothWeight:Int):Mammal(slothName)

我们如何知道SlothGeneric此类是否正在返回哺乳动物类,或者是否正在扩展该类?

2 个答案:

答案 0 :(得分:5)

类不能返回任何内容(只有它们的函数可以返回),因此,当您在类定义中看到分号:时,表示extends / implements

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

答案 1 :(得分:0)

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

  • 如果:将声明(属性或函数)与其类型分开,则:前应该没有空格

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

https://kotlinlang.org/docs/reference/coding-conventions.html#colon