со стейтом. Какое отношение оно имеет?
Подумал, что не совсем то будет
Помогла бы тут реализация интерфейсов для типов экстеншнами-делегатами, или как там это правильно назвать.
Экстеншены - это неудобно во время использования
Ну то есть можно, но вместо наличия альтернативных сигнатур получится одна сигнатура и постоянно придется везде тыкать toSomething
Речь шла именно про аргументы. Смысл в том, что есть функции, которые могут брать разные типы аргументов и приводить их друг к другу. Проблема в том, что каждый такой тип надо отдельной сигнатурой описывать. В принципе и юнионы бы помогли, там можно просто конвертер для всего юинона один раз прописать
Всё так, проблема только в том, что юниона у нас нет😔
Не, я об околосвифтовом варианте interface AnyInt { val intValue: Int } extension Int : AnyInt { override val intValue: Int get() = this } extension UInt : AnyInt { ... } fun myFun(anInt: AnyInt) myFun(42) myFun(42U) (с интами тупо выглядит, но имеем что имеем)
Если я не ошибаюсь, это и называется трейтами
Трейтами в разных языках разное называют 🤷♂
Собсна, это опять же о кип-87 примерно. Конечно это можно сделать плагином, они и сделали.
Это мультиресиверы, но они тут не супер помогают. С помощью их можно провесить конвертеры, но все равно будет куча лишней мороки.
Ну да, мультиресиверы не целиком закрывают хотелки тех, кто хкт просил.
Так тут никак оно не поможет, если не делать неявную конверсию, против которой народ активно возражает (и правильно делает)
Обсуждают сегодня