Size: a a a

Kotlin Community

2020 February 26

AM

Andrew Mikhaylov in Kotlin Community
Чат, а что является джавовым энтрипоинтом у приложения с suspend fun main? Что-то я заглянул в jar-ник и не нашёл в MainKt public static void main, я что-то упускаю?
источник

А

Александр in Kotlin Community
Igor Komarov
Мы ведь не можем написать свой статик экстеншн к java классу?
Смотря какой результат охота
источник

B

Beholder in Kotlin Community
Andrew Mikhaylov
Чат, а что является джавовым энтрипоинтом у приложения с suspend fun main? Что-то я заглянул в jar-ник и не нашёл в MainKt public static void main, я что-то упускаю?
synthetic метод там прячется с обычной сигнатурой
источник

AM

Andrew Mikhaylov in Kotlin Community
Beholder
synthetic метод там прячется с обычной сигнатурой
Хм. А синтетический метод может считаться точкой входа? Гредловый application отказался работать с этим классом.
источник

B

Beholder in Kotlin Community
Andrew Mikhaylov
Хм. А синтетический метод может считаться точкой входа? Гредловый application отказался работать с этим классом.
Ну это как бы фича для быстрого прототипирования. Для нормального приложения лучше сделать обычный main(Array<String>)
источник

IK

Igor Komarov in Kotlin Community
По arrow вопрос:

Допустим у меня есть
Kind<A, ForOption>


Я знаю, что это Traversable, и благополучно могу перейти к следующему Applicative и Traversable тайп-классу (например):

Kind<Kind<ForOption, A>, ForListK>


Результат у нас также будет Traversable, следовательно, мы можем дальше подсунуть Applicative & Traversable, и благополучно продолжать делать это рекурсивно пока не надоест.

Теперь вопрос. Как мне формально написать функцию, которая была бы экстеншном к результату произвольного, кроме быть может первого, шага этой рекурсивной цепочки, и осуществляла бы переход на следующий шаг?

Я либо глупенький, либо вопрос не очень простой, но вроде как такое сделать должно быть можно.
источник

AM

Andrew Mikhaylov in Kotlin Community
Beholder
Ну это как бы фича для быстрого прототипирования. Для нормального приложения лучше сделать обычный main(Array<String>)
Так, отбой, всё работает. Я опять написал suspend fun main(...) = coroutineScope {, тем самым запоров возвращаемый тип.
источник

IK

Igor Komarov in Kotlin Community
Igor Komarov
По arrow вопрос:

Допустим у меня есть
Kind<A, ForOption>


Я знаю, что это Traversable, и благополучно могу перейти к следующему Applicative и Traversable тайп-классу (например):

Kind<Kind<ForOption, A>, ForListK>


Результат у нас также будет Traversable, следовательно, мы можем дальше подсунуть Applicative & Traversable, и благополучно продолжать делать это рекурсивно пока не надоест.

Теперь вопрос. Как мне формально написать функцию, которая была бы экстеншном к результату произвольного, кроме быть может первого, шага этой рекурсивной цепочки, и осуществляла бы переход на следующий шаг?

Я либо глупенький, либо вопрос не очень простой, но вроде как такое сделать должно быть можно.
источник

IZ

Ivan Zemlyankiy in Kotlin Community
Roman Elizarov
Да. Сейчас в котлине в качестве "чистого namespace" может выступать только пакет. Но иногда, по стилистическим соображениям, хочется спрятать функции в namespace класса. Сейчас такой возможности нет. То есть это можно сделать только заведя companion который является полноценным объектом (с idenity и даже с именем), а не просто namespace-ом. Не очень понятно как такую фичу вписать в существующий синтаксис Котлина (case in point, compaion extensions are defined using compaion's name). То есть идей-то в этом направлении масса, но нет какой-нибудь которая вот прямо бы очень нравилась. Самое, конечно, "очивидное" решение, которое часто озвучивается, это "вернуть" в Kotlin модификатор "static".
Извините, а есть где-то дискуссия где обсуждаются за и против  "вернуть static в Котлин"?
источник

М

Михаил in Kotlin Community
А есть какая то возможность юзать package private в котлине? Мб там флаг для компилятора
источник

IZ

Ivan Zemlyankiy in Kotlin Community
И, гайз, я, к сожалению, не слишком сильно вовлечён в разработку на Котлин, можете поделиться впечатлениями о companion Obj? Как по мне идея +- не очень(вроде даже Бреслав признал что надо было лучше обдумать), но может после большого боевого опыта видны плюсы, котрые не видны с первого раза?
источник

D

Denys in Kotlin Community
Михаил
А есть какая то возможность юзать package private в котлине? Мб там флаг для компилятора
Нет
источник

D

Denys in Kotlin Community
Ivan Zemlyankiy
И, гайз, я, к сожалению, не слишком сильно вовлечён в разработку на Котлин, можете поделиться впечатлениями о companion Obj? Как по мне идея +- не очень(вроде даже Бреслав признал что надо было лучше обдумать), но может после большого боевого опыта видны плюсы, котрые не видны с первого раза?
Бреслав говорил про синтаксис. Сама идея крутая
источник

BP

Bogdan Panchenko in Kotlin Community
Ivan Zemlyankiy
И, гайз, я, к сожалению, не слишком сильно вовлечён в разработку на Котлин, можете поделиться впечатлениями о companion Obj? Как по мне идея +- не очень(вроде даже Бреслав признал что надо было лучше обдумать), но может после большого боевого опыта видны плюсы, котрые не видны с первого раза?
выше как раз опсушдали
источник

BP

Bogdan Panchenko in Kotlin Community
Да. Сейчас в котлине в качестве "чистого namespace" может выступать только пакет. Но иногда, по стилистическим соображениям, хочется спрятать функции в namespace класса. Сейчас такой возможности нет. То есть это можно сделать только заведя companion который является полноценным объектом (с idenity и даже с именем), а не просто namespace-ом. Не очень понятно как такую фичу вписать в существующий синтаксис Котлина (case in point, compaion extensions are defined using compaion's name). То есть идей-то в этом направлении масса, но нет какой-нибудь которая вот прямо бы очень нравилась. Самое, конечно, "очивидное" решение, которое часто озвучивается, это "вернуть" в Kotlin модификатор "static".
источник

IZ

Ivan Zemlyankiy in Kotlin Community
Bogdan Panchenko
выше как раз опсушдали
Ммм... я увидел только про расширение компаньона... откуда начать?
источник

BP

Bogdan Panchenko in Kotlin Community
компаньйоны очень часто нужны как namespace
источник

IZ

Ivan Zemlyankiy in Kotlin Community
Bogdan Panchenko
компаньйоны очень часто нужны как namespace
Ну это же не идея компаньона
источник

IZ

Ivan Zemlyankiy in Kotlin Community
Ощущение что его просто используют для этого, но предназначался для другого
источник

IZ

Ivan Zemlyankiy in Kotlin Community
Denys
Бреслав говорил про синтаксис. Сама идея крутая
Можно подробнее про идею?
источник