D对contracts programming的支持

来源:互联网 发布:伪造实验数据 编辑:程序博客网 时间:2024/05/17 06:42
包括参数的限制,返回值的限制和类状态大的限制,还有自动的unittest!!!!!long square_root(long x)in //参数{ assert(x >= 0);}out (result) //返回{ assert((result * result) == x);}body{ return math.sqrt(x);} class Date { int day; int hour; invariant //类状态 { assert(1 <= day && day <= 31); assert(0 <= hour && hour < 24); } } D对unittest的支持class Sum { int add(int x, int y) { return x + y; } unittest { assert(add(3,4) == 7); assert(add(-2,0) == -2); } }unittest在main以前会自动被调用