Size: a a a

Kotlin Community

2020 February 24

IK

Igor Komarov in Kotlin Community
Alexander Nozik
Я пока не вижу, в чем проблема. Если надо явно захватить J в динамике просто делаете в Context поле val type: KClass<out J>. Если в статике, никто не запрещает реификацию по двум параметрам
Мне нужно в контексте J определить функции которые бы принимали reified A. При этом в эти функции подставлять J при вызове у меня нет ни малейшего желания, а вот A подставлять очень бы хотелось.
источник

AO

Alexey Otts in Kotlin Community
Igor Komarov
Мне нужно в контексте J определить функции которые бы принимали reified A. При этом в эти функции подставлять J при вызове у меня нет ни малейшего желания, а вот A подставлять очень бы хотелось.
Ну тут без промежуточного захвата увы
источник

AN

Alexander Nozik in Kotlin Community
Igor Komarov
Мне нужно в контексте J определить функции которые бы принимали reified A. При этом в эти функции подставлять J при вызове у меня нет ни малейшего желания, а вот A подставлять очень бы хотелось.
Понял. Если мемберов делать нельзя, да, не тривиально
источник

IK

Igor Komarov in Kotlin Community
Alexey Otts
Ну тут без промежуточного захвата увы
Вот да. Думал, может есть какой-то обход неочевидный.
источник

AN

Alexander Nozik in Kotlin Community
Igor Komarov
Вот да. Думал, может есть какой-то обход неочевидный.
Ну самые простые уже сказали.
источник

AO

Alexey Otts in Kotlin Community
Igor Komarov
Вот да. Думал, может есть какой-то обход неочевидный.
Можно ещё шиворот на выворот сделать
f("foo".as<Double>())
источник

AO

Alexey Otts in Kotlin Community
Тогда компилятор сам все типы сможет
источник

AN

Alexander Nozik in Kotlin Community
Еще как вариант сделать в контексте билдер, в котором уже функции делать мемберами, но это примерно то, что @eld0727  предложил
источник

IK

Igor Komarov in Kotlin Community
Понял. Спасибо за помощь :) Может быть что-то удастся применить
источник

AN

Alexander Nozik in Kotlin Community
По-моему самый простой варинт, это сделать f("key", Double::class). Тип при этом выведется. Ну не так красиво, да
источник

AN

Alexander Nozik in Kotlin Community
зато реификация не нужна
источник

BP

Bogdan Panchenko in Kotlin Community
Danil Yudov
возвращаясь к мультиплатформенным либам. у меня есть зависимость на ktor-client, можно ли как-то настроить грэдл, чтоб он сам резолвил зависимость для конкретного sourceSet? а не писать для каждого по отдельности (а ля io.ktor:ktor-client-core-js, io.ktor:ktor-client-core-linuxx64)
Пока нет(
источник

D

Danil Yudov in Kotlin Community
Alexander Nozik
да, это называется Gradle metadata, она в градлах новее 6.0 автоматом включена
у меня 6.1, но что-то не работает. или я делаю не так.

в commonMain добавляю
api("io.ktor:ktor-client-core:$ktorVersion")

в остальных source sets просто dependsOn(commonMain)
источник

AN

Alexander Nozik in Kotlin Community
Danil Yudov
у меня 6.1, но что-то не работает. или я делаю не так.

в commonMain добавляю
api("io.ktor:ktor-client-core:$ktorVersion")

в остальных source sets просто dependsOn(commonMain)
А там кастомные соурс сеты? Не уверен, что для них работает. И я не помню, включена ли метадата в кторе
источник

YG

Yury Golikov in Kotlin Community
Можно ли более выразительно переписать это на котлине?
https://pastebin.com/jjf50zR5
источник

AM

Andrew Mikhaylov in Kotlin Community
Alexander Nozik
да, это называется Gradle metadata, она в градлах новее 6.0 автоматом включена
На консьюминг вместо публикации она включена ещё раньше.
источник

AN

Alexander Nozik in Kotlin Community
можно, заменить все классы, кроме последнего на функциональные типы
источник

D

Danil Yudov in Kotlin Community
Alexander Nozik
А там кастомные соурс сеты? Не уверен, что для них работает. И я не помню, включена ли метадата в кторе
нет, не кастомные. js, jvm, linuxX64
источник

AM

Andrew Mikhaylov in Kotlin Community
И да, оно по платформам резолвит, а не по сорс-сетам, потому в общем случае должно работать.
источник

AN

Alexander Nozik in Kotlin Community
Danil Yudov
нет, не кастомные. js, jvm, linuxX64
а зачем там dependsOn, он же автоматический
источник