Класс недвижимости
Ваш первый пример - класс свойство :
class MyClass {
val isFinished: Boolean
get() = actor.actions.size == 0
}
Это свойство определяет (необязательный) явный get
метод, часто называемый «получателем». Вы также можете опустить геттер и сделать:
class MyClass {
val isFinished: Boolean = (actor.actions.size == 0) //parens not necessary
}
Если опущено, как показано в последнем примере, значение будет скорее постоянным значением, которое не пересчитывается при каждом доступе. Оба варианта обслуживают разные варианты использования, но в большинстве случаев последнего будет достаточно.
Независимо от того, для клиента этого класса, свойство может быть доступно следующим образом:
val mc = MyClass()
mc.isFinished
Показывает доступ к недвижимости в Котлине.
Функция члена класса
Функции в Kotlin также могут определять функции, которые могут упоминаться как функции-члены. Ваш второй пример демонстрирует эту функцию:
class MyClass {
fun isFinished() = actor.actions.size == 0
}
Определение функции-члена аналогично свойствам с явными получателями, но все же отличается для клиента, поскольку они должны вызывать функцию вместо доступа к свойству:
val mc = MyClass()
mc.isFinished()
Примечание на стороне
Обратите внимание, что показанная функция использует тело выражения, которое эквивалентно следующему подходу тела блока:
class MyClass {
fun isFinished() {
return actor.actions.size == 0
}
}
Подробнее о функциях здесь .