juan_gandhi: (Default)
Juan-Carlos Gandhi ([personal profile] juan_gandhi) wrote2021-02-21 01:18 pm
Entry tags:

вопрос по Котлину

Как вообще определить какой-нибудь, скажем, <code>interface Magma<T></code>, с единственной операцией, чтобы можно было расширять классы, делая их магмами. Те же Int, String, List, все такое. И чтобы можно было вообще писать <code>fun something<T : Magma>(T a, T b) {...}</code>

Пробовал и так и сяк. Что-то не получается, чтобы элементарно. Понятно, что я Котлин еще не усвоил. Но вообще богатый язык. Богатый.

[personal profile] chabapok 2021-02-21 10:22 pm (UTC)(link)
Можно написать на жава код, скопипастить в .kt и идеа сама переведет его в котлин и вы увидите как оно пишется.
thedeemon: (Default)

[personal profile] thedeemon 2021-02-21 10:36 pm (UTC)(link)
А на джаве можно добавить интерфейсов String'у и Int'у?

[personal profile] chabapok 2021-02-21 10:57 pm (UTC)(link)
нет.
dememax: (сонливость)

Re: на джаве можно добавить интерфейсов String'у и Int'у?

[personal profile] dememax 2021-02-22 07:39 am (UTC)(link)
А разве исходный вопрос так стоял?
По-моему, там про изменения других классов...
lomeo: (Default)

Re: на джаве можно добавить интерфейсов String'у и Int'у?

[personal profile] lomeo 2021-02-23 09:46 pm (UTC)(link)
Да, только Arrows, но и они кривня.

[personal profile] malacasa 2021-02-22 07:12 am (UTC)(link)
Никак, им такое не завезли. Пишут просто ad-hoc-расширения и готово.
epimorphisms_split: (Default)

[personal profile] epimorphisms_split 2021-02-22 11:33 am (UTC)(link)

Это типичный type class, Котлин их вроде напрямую не поддерживает, но есть Arrow-kt https://arrow-kt.io/

https://arrow-kt.io/docs/arrow/typeclasses/semigroup/