объявление функций в классе данных Kotiln - PullRequest
0 голосов
/ 19 марта 2020

В Kotlin я хотел написать функцию, но я вижу новый способ написания ее со свойством "val", используя get(). В чем разница между двумя ниже.

 1)   fun sample(): String {
             return "text"
           }

   2)  val sample: String
            get() = "text"

1 Ответ

2 голосов
/ 19 марта 2020

Как отмечается в комментариях, между двумя фрагментами нет большой разницы. Я могу лишь указать на некоторые незначительные отличия:

  • Фрагмент # 1 будет распознан как объявленная функция, тогда как Фрагмент № 2 будет объявленным свойством. Это может иметь значение, если будет применяться логика c на основе отражения.
  • Фрагмент # 2 никогда не сможет принять аргумент и никогда не сможет вернуть ответ типа, отличного от объявленного val. Это связано с природой get() абстракции. Фрагмент # 1 может быть легко расширен, чтобы принять входной аргумент.
  • Фрагмент # 2 может содержать в IDE жалобу на создаваемое поле поддержки для свойства, которое не влияет на get() свойства.
  • Вообще говоря, фрагмент # 2 может и, вероятно, должен быть уменьшен до val sample: String = "text". get() декларация избыточна.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...