包括参数的限制,返回值的限制和类状态大的限制,还有自动的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以前会自动被调用
D对contracts programming的支持
最新推荐文章于 2019-12-05 17:06:54 发布