Функция, которую вы видите, не является методом класса;он не определен внутри класса и не является частью класса.(Это может быть даже определено в другом файле или в другом пакете целиком.)
Вместо этого это функция расширения : автономная функция, которая не является частьюкласс, но ведет себя в некоторых отношениях, как если бы это было.
Вы можете сказать, потому что имя функции имеет .
в нем.Это говорит компилятору, что функция расширяет класс до .
.
Если функция расширения находится в области видимости, вы можете вызывать ее, используя тот же синтаксис, который вы используете для вызова методов;а внутри функции this
относится к экземпляру класса («получателю»).Однако вы не можете получить доступ к закрытым методам или свойствам класса;this
может быть нулевым, если он расширяет обнуляемый тип;и функция разрешается статически (во время компиляции, как вызовы функций; не во время выполнения, как вызовы методов).
Это одна из важных функций Kotlin, поэтому ее стоит прочитать.