kotlin - Kotlin 中 : 和 = 运算符之间的区别
问题描述
我是 Kotlin 的新手,并试图了解何时使用"="
以及何时使用":"
. 这听起来让我有点困惑。
以下是导致我困惑的几件事:
button.setOnClickListener(object : OnClickListener{
override fun onClick(view: View){
doSomething() }
})
如果我没记错的话,这里的“object”是一个保存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"
!
有人可以解释我错在哪里。提前致谢。
解决方案
您将对象表达式和声明与具有默认值的常规变量声明混淆了。
:
指对象的类型或超类型。但是,在关键字的情况下object
,它允许创建一个继承自特定类型的匿名类。这类似于 kotlin 中的其他继承语法,但更具体。请参阅此处了解更多信息。
=
在这种情况下,只需为变量设置默认值。请注意,在您的示例中,您不是=
在函数调用中使用,而是在函数声明中使用。
推荐阅读
- java - 我尝试将 Spring 的默认记录器更改为 log4j2 有什么问题?
- r-markdown - 使用脉轮选项后,Blogdown/Xaringan 不起作用
- javascript - 使用 fetch 将文件和数据发送到服务器
- mysql - 根据特定列值连接两个表
- bash - 如何在 sed 中使用命令替换组捕获?
- php - WordPress 登录重定向保存 URL
- css - 如何在不同形状的背景图像上制作双斜面
- vba - VBA根据A列中的数据将Excel工作表拆分为其他工作表
- rxjs - 将 Observable 的 RxJs Observable 转换为待处理的 Observable 的计数?
- types - 如何从 HashMap 创建条目的 Vec?