有没有办法为参数指定各种类型

豆豆

有没有办法将类型的一致性限制为类型的集合?

让我举例说明:

give_foo (garbage: ANY): STRING
    do
        if attached {STRING} garbage as l_s then
            Result := l_s
        elseif attached {INTEGER} garbage as l_int then
            Result := l_int.out
        elseif attached {JSON_OBJECT} garbage as l_int then
            Result := l_int.representation
        elseif attached {RABBIT} garbage as l_animal then
            Result := l_animal.name + l_animal.color
        else
            Result := ""
            check
                unchecked_type_that_compiler_should_be_able_to_check_for_me: False
            end
        end
    end

我不能做类似的事情(就像转换函数可以做的那样)

give_foo (garbage: {STRING, INTEGER, JSON_OBJECT, RABBIT}): STRING
    do
        if attached {STRING} garbage as l_s then
            Result := l_s
        elseif attached {INTEGER} garbage as l_int then
            Result := l_int.out
        elseif attached {JSON_OBJECT} garbage as l_int then
            Result := l_int.representation
        elseif attached {RABBIT} garbage as l_animal then
            Result := l_animal.name + l_animal.color
        else
            Result := ""
            check
                unchecked_type_that_compiler_should_be_able_to_check_for_me: False
            end
        end
    end

或类似的东西

not_garbage_hash_table: HASH_TABLE[{INTEGER, STRING, ANIMAL}, STRING]
亚历山大·科格坚科夫

由于以下几个原因,不支持符合类型集合:

  • 在这种类型的表达式上调用特征变得不明确,因为相同的名称可能指代完全不相关的特征。
  • 在一种情况下,我们需要类型的总和(不相交联合),在第二个 - 普通联合中,在第三个 - 交集等。然后,可能会有组合。人们需要一个建立在一个变得过于复杂的类型系统之上的代数。
  • 如果需要检查参数是否为预期类型之一,则可以使用以下前提条件:

    across {ARRAY [TYPE [detachable ANY]]}
            <<{detachable STRING}, {INTEGER}, {detachable JSON_OBJECT}>> as t
    some argument.generating_type.conforms_to (t.item) end
    
  • 处理潜在未知类型表达式的常见做法是访问者模式,该模式处理已知情况并回退到未知情况的默认值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有没有办法将这种类型的字典设置为redis?

如果参数不是某种类型/制作可选参数,有没有办法忽略它?

有没有办法减少多个类型的参数?

有没有办法让IdeaVim理解各种选择?

有没有办法强制 TypeScript 返回某种类型?

有没有办法在 C++ 或 python 中执行这种类型的递归?

有没有办法解决 flatbuffers 联合中 255 种类型的限制?

是否可以指定各种类型?

内部具有各种类型的对象模型

有没有办法在不明确指定其类型的情况下接受 cython 函数中的参数?

有没有办法为在 Azure 函数中执行的 docker run 命令指定自定义参数

有没有办法接受类型为以下列方式在Java中的静态方法的参数?

C#-有没有办法将两个类型参数约束为必然不同?

有没有办法在没有 reinterpret_cast 的情况下保存多种类型的函数指针?

有没有办法使Haddock呈现类型参数方法的每个参数的文档?

只有一个对象键差异的多种类型 - 有没有办法让它们通用?

有没有办法为 UUID 类型配置默认类型映射

有没有办法为@AllArgsConstructor的所有参数设置'not null'(lombok)

有没有办法记录功能参数的参数?

有没有办法使用变量来获取指定的参数?

有没有办法从数学方程 SQL 中指定结果类型

有没有办法在不指定文件类型的情况下设置 AVPlayer?

有没有办法为python枚举指定默认值?

有没有办法在Lodash或Underscore中为null指定默认值?

有没有办法为图像指定最大高度或最大宽度?

有没有办法为Meteor指定Mongo数据库名称?

有没有办法为 GitHub Action 指定动态版本?

有没有办法在文本文件中逐行写入这种类型的排列?

有没有办法在Java中仅允许将一种类型用作属性?