当前位置: 首页 > 知识库问答 >
问题:

集合子集的穷举匹配

焦同
2023-03-14

我有一个关于使用“永远”类型的穷举开关/情况的问题。

比如说,我有一组字符串:{a,B}(字符串可以是任意长的单词,而且集合本身可能非常大),对于每个子集(比如{},{a,B}),我想创建一个函数:show:Set=

预发伪代码:

function show(subset: Set<string>): string {
    switch(subset) {
        case Set([]): return "Empty";
        case Set([A]): return "This is A";
        case Set([B]): return "This is B";
        case Set([A, B]): return "Dies ist A und B";
        default: assertUnreachable(subset)
    }
}

function assertUnreachable(x: never): never {
    throw new Error("Didn't expect to get here");
}

是否有可能在编译时保证show函数中包含所有可能的子集?所以把C加到集合{A,B,C}需要我扩充show函数吗?并为{C}、{A,C}、{B,C}和{A,B,C}添加案例。

暂时还没有答案

 类似资料:
  • 我正在尝试为firestore中的社交媒体应用程序组织数据。为帖子创建一个新集合或将其放入用户的子集合更好吗? 深度应该是一样的,但是一种方式比另一种方式有什么优势吗? 创建新集合: 职位(集合) 用户(集合) 用户中的子集合: 用户(集合)

  • 我一直在玩Python 3.10中的结构模式匹配,但不知道如何让它匹配一组。例如,我尝试过: 我尝试过: 以及: 我想有一种方法可以做到这一点,因为我们可以匹配其他对象,我只是缺少正确的语法,但我想不出还有什么其他方法可以尝试。任何帮助都将不胜感激!谢谢

  • 我需要弄清楚如何使用定义为以下内容的枚举参数列表应用基于注释的筛选: 所以我的如下所示: 我见过很多关于如何对单个枚举值进行条件查询和筛选的问题,但还没有关于对一组枚举值进行筛选的问题。是否有一种方法可以显式地强制转换单个值?

  • 运行此代码时: 引发异常: 系统。无效操作异常:集合被修改;枚举操作可能无法执行。 怎么做。NET知道该集合在枚举器迭代该集合时被修改了吗?集合对象中是否有此标志?

  • 问题内容: 我一直遇到这个问题: 我想让hibernate管理一个表示集合集合的表。例如: 地图地图 套装清单 清单地图 例如,我希望能够代表这一点: 作为一个表: 没有自定义的hibernate代码似乎是不可能的,我不介意。但是我希望有人对自定义代码的外观有所指导。 我应该扩展AbstractPersistentCollection吗? CompositeUserType? 可以管理多个表是否正