2014-05-18 9 views
0

Возможно ли в D определить переменную внутри контракта? У меня есть следующие функции в качестве члена интерфейса:Объявление переменной в контрактах

public @safe nothrow void eat(in ulong chunklength) 
in { assert(chunklength < length); ulong oldlength = length; } // lenght is a member variable 
out { assert(length == oldlength - chunklength); } 
+1

[Это обсуждение] (http://forum.dlang.org/thread/[email protected]) на форумах dlang предполагает, что он не поддерживается (если это не изменилось в прошлом году). – Michael

ответ

1

Это не возможно в D. Единственный вариант - сделать oldLength переменной-членом или переменной статического класса или глобальной переменной. В то время как переменные являются доступными для разных блоков unittest (хотя это деталь реализации и не гарантируется), это не относится к контрактам.

-1

на основе правил области видимости языка С, я бы предположить, что объявление «oldlength» внутри {} для «в» сделало бы ее локальной для этой сферы и не отображается в области действия, когда для части контракта. Будет ли продвигать декларацию за пределами контракта?

+0

Как его можно разместить за пределами договора? о_О –

 Смежные вопросы

  • Нет связанных вопросов^_^