in контракты?
Предусловие к функциям
ну єто контракти а как они с интерфейсами работают? я просто не понимаю куда их там пихать
Ну если ты напишешь in к функции в интерфейсе, а потом реализуешь эту функцию в классе, то in не будет видеть компилятор
Но и ошибки не выдаёт
Та госпаде, шо ни разу не юзал? Я просто не за пк, не удобно
с интерфейсом нет
Скину позже пример
` interface I { int func(int x) in(x>0) in(x<20) // { // writeln("test-1"); // assert(x>0); // } out(ret) { writeln("test"); assert(ret > 0); } } class C : I { int func(int x) // in (x<10) { assert(x<20); return x*2; } } import std.stdio; void main() { auto c=new C; writeln(c.func(22)); } `
предусловия дочерний класс может ослаблять, т.к. предусловия в нём не определены, то по итогу срабатывает true || условия из интерфейса, поэтому out сработает, а in нет, насколько я помню. Где-то ссылка была.
Может у тебя релиз сборка)
Обсуждают сегодня