Kotlin中的:和=运算符之间的区别

时间:2019-01-18 06:19:35

标签: kotlin

我是Kotlin的新手,正试图了解何时使用"="和何时使用":"。这听起来让我有些困惑。

以下是引起我困惑的几件事:

button.setOnClickListener(object : OnClickListener{
    override fun onClick(view: View){
    doSomething() }
})    

如果我没记错的话,“对象”是一个变量,其中包含一个 OnClickListner 实例。

按照上面的示例,

class Car(val make:String ,var  model : String){

fun start(noise : String = "Wroom Wroom"){
    println(noise)
 }
}
fun main(args: Array<String>) {

val carOne = Car("Toyota","Avalon")
var car2:Car("Telsa","S")
car3:Car("Benz","C")

}

在函数启动时,noise : String = "Wroom Wroom "有效,carOne有效,但 car2 car3 无效,它遵循变量"noise"的模式!

有人可以解释我哪里错了。预先感谢。

3 个答案:

答案 0 :(得分:2)

您正在将对象表达式和声明与带有默认值的常规变量声明混淆。

:引用对象的类型引用超类型。不过,对于关键字object,它允许创建从特定类型继承的匿名类。这类似于kotlin中的其他继承语法,但更具体。有关更多信息,请参见here

在这种情况下,

=只是为变量设置默认值。请注意,在您的示例中,您并未在函数调用中使用=,而是在函数声明中使用了const array = [ ["a", "b"], ["c", "d"], ["b", "d"], ["c", "a", "b"], ["a", "b", "c", "d"] ] let result = array.join().replace(/[ ]/g, '').split(',') let count = {} result.forEach(c => count[c] = (count[c] || 0) + 1) console.log(count)

答案 1 :(得分:1)

  

“ =” 赋值运算符-用于指定参数的默认值。


  

“:” 冒号:它将声明中的名称与类型分开


答案 2 :(得分:1)

=用于分配 :用于定义类型

但是,当您将其用作函数中的参数时

fun foo(noise : String = "Wroom Wroom ")

噪声是您的变量

字符串是您的类型(由定义)

=“ Wroom Wroom” 是默认值