https://kotlinlang.org logo
#russian
Title
# russian
a

aleksey.tomin

05/26/2020, 6:00 AM
3. Это из другой темы. Смотрю - вводятся “контракты” но как-то странно- без наследования. Это уже решённый вопрос, или можно попробовать убедить так не делать?
a

altavir

05/26/2020, 6:14 AM
Не понял мысль. Наследование чего?
a

aleksey.tomin

05/26/2020, 6:17 AM
Правильный контракт поддерживает наследование. Если я в интерфейсе написал
fun get(v: Int) require v > 0
то: 1. В любой реализации метода я могу ожидать, что параметр больше нуля 2. Я не могу написать
override fun get(v: Int) require v > 1
но могу написать
override fun get(v: Int) require or v >= 0
и при вызове метода интерфейса с параметром 0 в этой реаллизации ошибки не будет А то, что делается- это просто аналог обычного
if
a

altavir

05/26/2020, 6:23 AM
Ну как я это понимаю, контракт - это скорее деталь реализации, чем часть интерфейса. Он говорит о том, что данная реализация будет работать именно таким образом. Пример я не понял, потому что require - это вообще не контракт
a

aleksey.tomin

05/26/2020, 6:31 AM
Я про https://github.com/JetBrains/kotlin/blob/master/libraries/stdlib/src/kotlin/contracts/ContractBuilder.kt А контракт - я про
eiffel
и его контракты.
a

altavir

05/26/2020, 7:08 AM
Я понял. Но require там нет. Есть такая функция, но она ка раз работает как if.
a

aleksey.tomin

05/26/2020, 7:11 AM
Вот я и про то- костыль вместо контракта
a

altavir

05/26/2020, 7:11 AM
Так, давайте не путать require и контракты, они совсем по-разному работают и для разных целей
a

aleksey.tomin

05/26/2020, 7:15 AM
В прородителе контрактов как раз require и описывал контракт 🙂
a

altavir

05/26/2020, 7:16 AM
Возвращаясь к контрактом. В нынешнем виде они описывают все-таки реализацию, а не интерфейс. Поэтому не очень понимаю, в чем претензия. Если нужно наследование, то нужно это делать на уровне типов
i

ilya.gorbunov

05/26/2020, 11:04 AM
Вот предложение про контракты, подробнее https://github.com/Kotlin/KEEP/blob/master/proposals/kotlin-contracts.md В частности, наследование и верификация контрактов пока открытые вопросы.
5 Views