Kotlin имеет функцию расширения A.to(that: B)
, которая принимает любые два типа параметров и возвращает Pair<A,B>
.Теперь у меня есть класс с функцией to
, который принимает два аргумента.
В основном две разные функции to
имеют точный синтаксис, и функция в классе маскируется расширением.
Пример :
// following return Pair<k,v>
fun convert(value:K, converter: org.jooq.Converter<K,V>) = converter.to(value)
Конвертер Jooq - довольно популярный класс для преобразования класса, совместимого с базой данных, в пользовательский класс.
Согласно Котлину документация , функции расширения имеют приоритет над методами класса, что не имеет смысла для методов расширения, предоставляемых пакетом kotlin, поскольку их область действия является глобальной.Существует квалифицированный-это обходной путь для выхода за пределы функций расширения, но, похоже, он здесь не помогает
Редактировать: fun convert
сам по себе является функцией расширения.В противном случае функция-член имеет приоритет.