Kotlin中:和=运算符之间的差异

Kotlin中:和=运算符之间的差异,kotlin,Kotlin,我是Kotlin的新手,试图了解何时使用“=”,何时使用:“。我听上去有点困惑 以下是导致我困惑的几件事: button.setOnClickListener(object : OnClickListener{ override fun onClick(view: View){ doSomething() } }) 这里的“object”是一个变量,如果我没弄错的话,它保存一个OnClickListner实例 按照上面的例子 class Car(val make:Str

我是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")

}
class Car(val品牌:字符串,var型号:字符串){
乐趣开始(噪音:String=“Wroom Wroom”){
println(噪音)
}
}
趣味主线(args:Array){
val carOne=汽车(“丰田”、“阿瓦隆”)
风险值car2:Car(“电信服务局”、“S”)
car3:汽车(“奔驰”、“C”)
}
在函数启动时,
noise:String=“Wroom Wroom”
有效,carOne有效,但car2car3无效,遵循变量
“noise”
的模式

有人能解释一下我错在哪里吗。提前谢谢

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


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


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


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


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

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

fun foo(noise : String = "Wroom Wroom ")
噪音是您的变量

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

=“Wroom Wroom”是默认值

=用于赋值 :用于定义类型

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

fun foo(noise : String = "Wroom Wroom ")
噪音是您的变量

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


=“Wroom Wroom”是默认值

您将对象表达式和声明与带有默认值的正则变量声明相混淆

指对象的类型或超类型。对于关键字
对象
,它允许创建从特定类型继承的匿名类。这类似于kotlin中的其他继承语法,但更具体。有关更多信息,请参阅


=
在本例中,仅为变量设置默认值。请注意,在您的示例中,您不是在函数调用中使用
=
,而是在函数声明中使用

将对象表达式和声明与带有默认值的正则变量声明混淆

指对象的类型或超类型。对于关键字
对象
,它允许创建从特定类型继承的匿名类。这类似于kotlin中的其他继承语法,但更具体。有关更多信息,请参阅


=
在本例中,仅为变量设置默认值。请注意,在您的示例中,您不是在函数调用中使用
=
,而是在函数声明中使用

请参阅并向下滚动至“操作员和特殊符号”,谢谢您将我重定向到该页面。根据引用,“:”用于类型声明,因此不能与初始化合并。所以car2的正确用法应该是,var car2:Car=Car(“Benz”,“C”)。请参阅并向下滚动到“操作员和特殊符号”,谢谢您将我重定向到该页面。根据引用,“:”用于类型声明,因此不能与初始化合并。所以car2的正确用法应该是,var car2:Car=Car(“Benz”,“C”)。kotlin和java之间的区别:谢谢。运算符“:”用于类型声明,因此不能与初始化合并。所以car2的正确用法应该是,var car2:Car=Car(“Benz”,“C”)。kotlin和java之间的区别:谢谢。运算符“:”用于类型声明,因此不能与初始化合并。所以car2的正确用法应该是,var car2:Car=Car(“Benz”,“C”)。谢谢你写这篇文章。运算符“:”用于类型声明,因此不能与初始化合并。所以car2的正确用法应该是,var car2:Car=Car(“Benz”,“C”)。谢谢你写这篇文章。运算符“:”用于类型声明,因此不能与初始化合并。所以car2的正确用法应该是,var car2:Car=Car(“Benz”,“C”)。这可能也是根据惯例,类型规范没有前导空间的原因;它避免了混淆读取器(
var a:Int
vs
object:T()
),这可能也是按照惯例,类型规范没有前导空格的原因;它避免了混淆读取器(
var a:Int
vs
object:T()