raku - 在两个模块之间使用角色时出现问题
问题描述
我正在制作一个具有多模块文件的模块,并且在不同模块中使用角色时遇到了这个问题。
例如我们有两个模块 Foo 和 Bar,每个模块都有一个角色。
module Foo {
role foo is export {
}
}
module Bar {
import Foo;
role bar is export does foo {
}
}
import Foo;
import Bar;
sub f(foo \k) { }
f(bar.new);
我认为代码很好,但 rakudo 说它认为 bar 不是 foo 并拒绝编译。
这里有什么问题?
解决方案
foo
后面的符号import
不是=:=
,Foo::foo
也不接受智能匹配中的后者。这对我来说似乎是一个错误,并且可能与正在发生的事情有关:
module Foo {
role foo is export { }
.say for foo.^name, Foo::foo.^name,
Foo.WHICH, foo.WHICH, Foo::foo.WHICH,
foo.isa(Foo::foo),
Foo::foo.isa(foo),
foo.does(Foo::foo),
Foo::foo.does(foo),
foo ~~ Foo::foo,
Foo::foo ~~ foo,
}
import Foo;
.say for foo.^name, Foo::foo.^name,
Foo.WHICH, foo.WHICH, Foo::foo.WHICH,
foo.isa(Foo::foo),
Foo::foo.isa(foo),
foo.does(Foo::foo),
Foo::foo.does(foo),
foo ~~ Foo::foo,
Foo::foo ~~ foo,
Foo::foo
Foo::foo
Foo|U64545472
Foo::foo|U64545856
Foo::foo|U64545856
False
False
True
True
True
True
Foo::foo
Foo::foo
Foo|U64545472 <^-- all good so far
Foo::foo|U64545616 <--- uhoh
Foo::foo|U64545856
False
False
True
True
True
False <-- presumably a consequence of uhoh
如果没有人超过我并且没有人说明为什么它不是错误,我将在接下来的几天内提交错误。
推荐阅读
- c++ - 给定一个包含 lambda 函数的调用堆栈,如何确定其来源?
- python - 多标签分类损失函数
- java - Java 8 中带有 Lambda 的一元函数接口中的 HashMap
- java - HTTP 请求失败并出现 EOFException
- javascript - PouchDB 和 React-Native 不复制 .to() 但 .from() 正在工作
- javascript - vue中的JS Promise显示为未定义
- spring - jsp中的java spring模型对象(很奇怪)
- .net - webconfig 重写规则以添加 www 前缀
- angular - Highcharts 3D变焦距离
- node.js - 在 RxJS 和 NodeJS 中捕获错误