gpt4 book ai didi

enums - raku 类型枚举不适用于自定义类型

转载 作者:行者123 更新时间:2023-12-04 11:03:11 27 4
gpt4 key购买 nike

Raku 类型枚举是否应该与自定义类型一起使用?尝试以下操作时出现编译错误:

role A { }
class B does A { }
class C does A { }
my A enum E ( b => B, c => C );
结果是

Cannot find method 'mro' on object of type Perl6::Metamodel::ParametricRoleGroupHOW


class D { }
my D enum F ( b => D.new, c => D.new );
结果是

Cannot auto-generate a proto method for 'Int' in the setting


或者这是否属于

Complex expressions for generating key-value pairs are not supported.


编辑
关于第一个例子 - 看起来 Raku 不喜欢角色作为类型约束。尝试时给出相同的错误,例如
my Rational enum G ( one => 1/1, two => 1/2 );
至于我真正希望的是:

Using a type object as a value for an enum not yet implemented. Sorry.

最佳答案

问题最像只有IntStr实际上经过彻底测试。
例如,您的 Rational如果您使用过 Rat,它甚至无法正常工作反而。

my Rat enum G ( one => 1/1, two => 1/2 );
say one.Rat;
# one
那应该说 1Int保持一致枚举和 .Int ,并致 Str枚举和 .Str
my Int enum I ( one-i => 1, two-i => 2 );
my Str enum S ( one-s => 'ONE', two-s => 'TWO' );

say one-i.Int; # 1
say one-s.Str; # ONE

所以这个错误的原因:

Cannot auto-generate a proto method for 'Int' in the setting


Rakudo 是否假设除了 Str 之外的任何东西?枚举必须是 Int枚举。
它应该做的是生成一个与返回未由枚举装箱的值的类同名的方法。

如果它甚至不能正常工作 Rat ,它编译并且是一个内置类型;那么用户定义的就没有机会了。这对角色双重适用。

TL; 博士
这是一个错误。 (实际上至少两个)

关于enums - raku 类型枚举不适用于自定义类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68103304/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com