问题描述
例如,我要在VDM ++中将 nat 转换为 seq 。
在下面的代码中,如果q的类型为nat且q "X is {value of q}"。
class A1
instance variables
private x : nat := 0;
operations
public setValueOfX : nat ==> seq of char
setValueOfX(q) ==
(
if is_nat(q) and q < 3
then
(
x := q;
-- The following line doesn't work
-- return "X is " ^ q;
)
else
return "Invalid value! Value of x must be more than 0 and less than 3.";
);
end A1
我尝试使用^
,但得到以下error:
错误[207]:“ ^”的Rhs不是序列类型
行为:nat
exp:(#seq1 | [])
解决方法
不,您不能像VDM中那样隐式转换值。
如果只想以纹理形式查看结果,则可以查看IO库,该库使您可以将各种类型的混合“打印”到控制台。另外,如果必须返回一个字符串,则可以指定一个将nat转换为十进制字符串的函数,然后返回“结果为” ^ nat2str(q)。