7.7.2 访问结果值

通过信号发送的消息是异步的,因此没有返回值。如果需要一个逻辑返回值,那么它必须被建模为另一个单独的信号消息。但对于一个操作调用来说是有一个潜在的返回值的。如果操作已经返回(对于异步调用则不必如此)的话该值是可用的,而且,在定义时已经规定了返回值类型。OclMessage的标准操作result()包含了所调用操作的返回值。如果getMoney(...)是Company 上一个返回布尔值的操作,比如:Company::getMoney(amount: Integer): Boolean,我们可以写:

context Person::giveSalary(amount: Integer)
post: let message: OclMessage=company^getMoney(amount) in
    message.hasReturned()                --getMoney已经被发送和返回
    and
    message.result()=true                --getMoney调用返回真

在上面的例子中,我们还可以从OclMessages的集合中访问返回值的集合。如果message.hasReturned()为假,那么message.result()是无效的。

results matching ""

    No results matching ""