Перегруженные методы, получающие функции более высокого порядка в Котлине

Возможно ли иметь перегруженные методы, каждый из которых принимает функцию и ничего другого, например

fun foo(a: () -> A) { } fun foo(b: () -> B) { } 

В Scala это невозможно, потому что функции desugar для экземпляров Function0 и из-за стирания этих методов не могут быть устранены. Это тот же случай в Котлине, и если так, то есть обходной путь?

Вы можете работать над сигнатурными конфликтами в Kotlin, используя аннотацию [platformName] :

 import kotlin.platform.* class A class B [platformName("foo1")] fun foo(a: () -> A) { } fun foo(b: () -> B) { } 

См. Документы здесь.

Intereting Posts
Почему Kotlin необходимо связать свою рабочую среду после компиляции? Расширения и фрагменты Android Kotlin Идиоматические редакторы Kotlin Kotlin: Как получить и установить текст в TextView на Android с помощью Kotlin? Как получить ext. * Переменные в блок плагинов в build.gradle.kts Метод обратного вызова часто называется переадресацией события на Observable? Исключение: blockingConnect не следует вызывать в потоке пользовательского интерфейса, несмотря на то, что я добавил другой поток Как преобразовать строку в char в Kotlin? Как я могу объявить аргумент в Kotlin, который принимает (только) перечисления Значение поля суммы JOOQ: BigDecimal to Int Spring Boot: добавление @Transactional создает java.lang.ClassNotFoundException: org.aspectj.util.PartialOrder $ PartialComparable Задача сериализации класса данных класса Kotlin Калькулятор не работает Как использовать объект Котлина путем отражения Новая архитектура с кинжалом и Котлином