Разница между: и = операторами в Котлине - PullRequest
0 голосов
/ 18 января 2019

Я новичок в 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 голосов
/ 18 января 2019

= для назначения : для определения типа

однако, когда вы используете его в качестве параметра в функции

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

шум ваша переменная

Строка - это ваш тип (определяется как : )

= "Wroom Wroom" является значением по умолчанию

0 голосов
/ 18 января 2019

Вы путаете выражения объектов и объявления с объявлениями обычных переменных со значениями по умолчанию.

: относится к типу объекта или к супертипу. Однако в случае ключевого слова object оно позволяет создать анонимный класс, который наследует от определенного типа. Это похоже на другой синтаксис наследования в kotlin, но более конкретно. См. здесь для получения дополнительной информации.

= в этом случае просто устанавливает значение по умолчанию для переменной. Обратите внимание, что в вашем примере вы не используете = в вызове функции, а вместо этого в объявлении функции.

0 голосов
/ 18 января 2019

"=" Оператор присваивания - используется для указания значений по умолчанию для параметров.


":" Двоеточие: отделяет имя от типа в объявлениях


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...