我是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"
的模式!
有人可以解释我哪里错了。预先感谢。
答案 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” 是默认值