10.3.3 计算包的其它操作
EvalEnvironment
[1] 操作getValueOf产生命名空间中绑定到name参数的值。注意该值有可能是UndefinedValue。
context EvalEnvironment::getValueOf(n: String): Value
pre: -- none
post: result = bindings->any(name = n).value
[2] 操作replace替换由nvb参数给定的名称的值。
context EvalEnvironment::replace(nvb: NameValueBinding): EvalEnvironment
pre: -- none
post: result.bindings = self.bindings->excluding(self.bindings->any(name = nvb.name))->including(nvb)
[3] 操作add增加一个由nvb参数指定的名值绑定。
context EvalEnvironment::add(nvb: NameValueBinding): EvalEnvironment
pre: -- none
post: result.bindings = self.bindings->including( nvb )
[4] 操作addAll添加nvbs参数指定的所有名值绑定。
context EvalEnvironment::add(nvbs: Collection(NameValueBinding)): EvalEnvironment
pre: -- none
post: result.bindings = self.bindings->union( nvbs )
CollectionRangeEval
[1] 操作getRange()返回一个整数序列,包括了集合区间中的所有整数。
context CollectionRangeEval::getRange(first, last: Integer): Sequence(Integer)
pre: -- none
post: result = if first = last then
first->asSequence()
else
first->asSequence()->union(getRange(first + 1, last))
endif