我正在学习如何编程,但我不能完全理解的一件事是前置条件和后置条件。
在调用函数之前是否将if语句视为前提条件,或者在大多数语言中是否有单独的更有效的方法?
我也在努力寻找前提条件的任何示例,这些示例可以用我目前的编程知识理解,如果有人可以证明简单的话,那么我将不胜感激(任何语言都可以)
最佳答案
这个c++'s paper陈述得很清楚
前置条件和后置条件属于基于契约(Contract)的编程。
在Dlang中,基于契约(Contract)的编程具有良好的设计。 This document提供了一个示例:
long square_root(long x)
in
{
assert(x >= 0);
}
out (result)
{
assert(result ^^ 2 <= x && (result + 1) ^^ 2 > x);
}
do
{
return cast(long)std.math.sqrt(cast(real)x);
}
前置条件在
in
块中,后置条件在out
块中。9
传递到函数中一样。 live demo
-1
传递到函数中。 live demo
do
块中的逻辑所致,例如返回square
而不是square-root
,那么后置条件将起作用: live demo
对于类,Dlang也有很好的工具,请阅读the document了解更多
顺便说一句,C++还将契约(Contract)设计列为C++ 20的草案:https://www.reddit.com/r/cpp/comments/8prqzm/2018_rapperswil_iso_c_committee_trip_report/
Here是建议,可能也有助于理解它们(尽管比D,恕我直言要难看得多)