Size: a a a

Kotlin Community

2020 March 04

OY

Oleg Yukhnevich in Kotlin Community
Alexey Otts
Эх как мне сегодня хотелось, чтобы котлин умел вешать ограничения на генерики.
fun <A> foo(): Foo<A> where MyType: A
а чего добиться хочется?
источник

BP

Bogdan Panchenko in Kotlin Community
Alexey Otts
Эх как мне сегодня хотелось, чтобы котлин умел вешать ограничения на генерики.
fun <A> foo(): Foo<A> where MyType: A
Так он может
источник

AO

Alexey Otts in Kotlin Community
Bogdan Panchenko
Так он может
Разве в эту сторону может? В обратную да может
источник

BP

Bogdan Panchenko in Kotlin Community
Alexey Otts
Разве в эту сторону может? В обратную да может
А что значит "в эту сторону", вы про порядок ?
источник

AO

Alexey Otts in Kotlin Community
Oleg Yukhnevich
а чего добиться хочется?
Мне вообще надо было на интерфейс навешать ограничение, что туда можно передавать только типы, которые являются предками определенного типа
источник

AO

Alexey Otts in Kotlin Community
Bogdan Panchenko
А что значит "в эту сторону", вы про порядок ?
Я про то что точно можно A: MyType но вот сейчас он уверен что можно MyType: A
источник

OY

Oleg Yukhnevich in Kotlin Community
Alexey Otts
Мне вообще надо было на интерфейс навешать ограничение, что туда можно передавать только типы, которые являются предками определенного типа
да, так похоже совсем нельзя
а какой кейс? более реальный
источник

AO

Alexey Otts in Kotlin Community
Oleg Yukhnevich
да, так похоже совсем нельзя
а какой кейс? более реальный
Да я дсли сейчас пишу и хотел общий код утащить в отдельный интерфейс, но напоролся на невозможность вот так типы повертеть
источник

AN

Alexander Nozik in Kotlin Community
Кирилл Романенко
Это разве не рефлекшен?
Это позволенный рефлекшен. Вполн можно так делать
источник

VM

Vadim Morozov in Kotlin Community
а я ведь могу использовать сами Sealed классы?
источник

VM

Vadim Morozov in Kotlin Community
ну мол есть такая структура
sealed class PaymentMethod() {
   data class CreditCard(val token: String, val expireDate: String) : PaymentMethod()
   data class DirectPayment(val phoneNumber: String) : PaymentMethod()
}

и чтобы не писать
PaymentMethod.CreditCard(...)

могу ли я задать все три значения в PaymentMethod?
источник

I

Igor in Kotlin Community
Vadim Morozov
ну мол есть такая структура
sealed class PaymentMethod() {
   data class CreditCard(val token: String, val expireDate: String) : PaymentMethod()
   data class DirectPayment(val phoneNumber: String) : PaymentMethod()
}

и чтобы не писать
PaymentMethod.CreditCard(...)

могу ли я задать все три значения в PaymentMethod?
- вы можете перенести туда общие проперти
- вы НЕ можете инстанциировать сам PaymentMethod
источник

СГ

Сергей Греков in Kotlin Community
Vadim Morozov
ну мол есть такая структура
sealed class PaymentMethod() {
   data class CreditCard(val token: String, val expireDate: String) : PaymentMethod()
   data class DirectPayment(val phoneNumber: String) : PaymentMethod()
}

и чтобы не писать
PaymentMethod.CreditCard(...)

могу ли я задать все три значения в PaymentMethod?
источник

VM

Vadim Morozov in Kotlin Community
thank you very much
источник

D𝔇

Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶 in Kotlin Community
Тимур Бухараев
после обновления на 1.3.70 стали сыпаться такие ворнинги из kapt:
Task :admin-tool:kaptGenerateStubsTestKotlin
w: Classpath entry points to a non-existent location: R:\Server\admin-tool\build\classes\java\main

никто случайно не сталкивался с таким?
это же что-то андроидное вроде
источник

Sergey λ in Kotlin Community
Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶
это же что-то андроидное вроде
Server admin tool?
там R похоже просто имя диска, а не класс ресурсов андроид )
источник

D𝔇

Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶 in Kotlin Community
Sergey λ
Server admin tool?
там R похоже просто имя диска, а не класс ресурсов андроид )
Да че-то на путь я не посмотрел)
источник

BP

Bogdan Panchenko in Kotlin Community
Vadim Morozov
ну мол есть такая структура
sealed class PaymentMethod() {
   data class CreditCard(val token: String, val expireDate: String) : PaymentMethod()
   data class DirectPayment(val phoneNumber: String) : PaymentMethod()
}

и чтобы не писать
PaymentMethod.CreditCard(...)

могу ли я задать все три значения в PaymentMethod?
Написать функцию-конструктор
источник

AM

Andrew Mikhaylov in Kotlin Community
Я правильно понимаю, что detekt-овский LongParameterList не ограничивает конструкторы, и вообще в detekt-е нет правила, ограничивающего количество параметров в конструкторе?
источник

D

Denys in Kotlin Community
Andrew Mikhaylov
Я правильно понимаю, что detekt-овский LongParameterList не ограничивает конструкторы, и вообще в detekt-е нет правила, ограничивающего количество параметров в конструкторе?
Судя по всему, да.
https://github.com/arturbosch/detekt/blob/master/detekt-rules/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/complexity/LongParameterList.kt#L37

Нужно будет свое правило набросать. Можно и создать PR :)
источник