首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在VDM++中有类型铸造吗?

在VDM++中有类型铸造吗?
EN

Stack Overflow用户
提问于 2020-11-09 11:44:59
回答 1查看 110关注 0票数 0

例如,我希望将nat转换为char的seq in VDM++。

在下面的代码中,如果q是nat类型,并且q< 3,我希望操作setValueOfX返回"X is {value of q}"

代码语言:javascript
复制
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

我尝试过使用^,但是我得到了下面的错误

Error207:“^”的Rhs不是序列类型 法案: nat 例:(#\\ []的seq1 )

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-10 10:18:30

不,您不能在VDM中隐式地转换这样的值。

如果您只想以纹理形式查看结果,可以查看IO库,它允许您将各种类型“打印”到控制台。或者,如果必须返回字符串,则可以指定将nat转换为十进制字符串的函数,返回“结果是”^ nat2str(q)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64751023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档