我将为这个场景简化一些事情(它在 Perfect Developer 中,它很快就会变得复杂)。假设我的类中有一个简单的模式,称为Succeed
,它接受一个Course
(这是一个先前定义的类)作为参数。
基本上,我想确保该课程set
作为前提条件在我的课程中,然后将其添加到我coursesCompleted
的后置条件中。这个简单的模式效果很好,看起来像这样:
schema !Succeed(c:Course)
pre
c in allCourses
post
coursesCompleted! = coursesCompleted.append(c);
但是,我想添加一个非常简单的if
条件:如果我的 coursesCompleted 基数是 30 或更多,我想设置一个Diplomation
枚举,比如说,“ Ok
”。如果基数小于30,我将其设置为“ NotOk
”
根据 Perfect Developer 的文档以及我见过的所有罕见示例,if
语法应如下所示:
if [condition1] : do stuff;
[condition2] : do other stuff;
fi
但是,如果我直接将其插入我的架构中,则如下所示:
schema !Succeed(c:Course)
pre
c in allCourses
post
coursesCompleted! = coursesCompleted.append(c),
if [#coursesCompleted >= 30] : diplomation = Ok@DiplomationEnum;
[#coursesCompleted < 30] : diplomation = NotOk@DiplomationEnum;
fi
它不起作用,我总是以“非常具有描述性”结束
错误!关键字“if”的语法错误,应为以下之一:“!” '(' '?' 'c_address_of'
我已经尝试;
在任何地方添加一些,在 之后添加一个via
关键字post
,更改它的位置,;
与 s交易,
,以及许多其他反复试验的东西。
所以我的问题是:如何if
在 Perfect Developer 中向模式的后置条件添加条件?
请在 Perfect Developer 中回答。我(遗憾地)知道我的正式方法,我只需要if
在世界上最糟糕的工具中编译。