vdm++ - 通过 for all 循环运行集合时无法返回集合中的每个元素
问题描述
我试图通过 for all 循环运行包含 Brewage 对象的集合中的每个元素。但是当我尝试这样做时,返回值会变得混乱。
循环功能:
public pure Scan: set of Brewage ==> Brewage
Scan(brewage) ==
for all q in set brewage do
return q
酿造构造:
public StringType = seq of char;
public StringLabel = seq of char;
public Char = char;
instance variables
type : StringType;
label : StringLabel;
deposit : Char;
operations
public Brewage: StringType * StringLabel * Char ==> Brewage
Brewage(ty, la, de) ==
( type := ty;
label := la;
deposit := de
);
我得到的错误是在 Scan 函数中,如下所示:
操作返回 void 值。实际:(() | Brewage) 预期:Brewage
解决方案
您可以使用 let 绑定来选择集合中的 Brewage,然后将其返回:
public pure Scan: set of Brewage ==> Brewage
Scan(brewage) == let b in set brewage in return b;
public main: ()==>Brewage
main()==
(
let s = { new Brewage(), new Brewage() } in
return Scan(s);
);
推荐阅读
- nuxt.js - Nuxt 多个资产发射到相同的文件名热更新
- python - 使用pyquaternion旋转向量数组
- php - 如何使用 ajax 将数据属性发送到 laravel 控制器(存储在数据库中)?
- excel - IE关闭窗口并在新窗口中连接定向链接
- java - 如何为每个 recyclerview 项目的按钮添加功能?
- sql - 列出 sql server 中包含特定列的所有对象
- azure - 填充选项列表时如何在 Extension task.json 中对数据源绑定进行排序和过滤
- java - Spring Boot:@PreAuthorize 给出 403 禁止 AccessDeniedException
- php - Codeigniter XML-RPC 连接到 Odoo 域错误
- reactjs - 在反应原生的平面列表中进行检查