将角色混合到可调用对象中

2024-03-08

理论上,你可以在运行时将角色混合到对象中 https://docs.raku.org/language/objects#Mixins_of_Roles。所以我尝试用一​​个函数来做到这一点:

my &random-f = -> $arg  { "Just $arg" };

say random-f("boo");

role Argable {
    method argh() {
        self.CALL-ME( "argh" );
    }
}

&random-f does Argable;

say random-f.argh;

在角色中,我使用self引用已经定义的函数,并且CALL-ME https://docs.perl6.org/routine/CALL-ME实际调用角色内的函数。但是,这会导致以下错误:

Too few positionals passed; expected 1 argument but got 0
in block <unit> at self-call-me.p6 line 5

我真的不知道谁在期待一场争论。理论上应该是CALL-ME功能,但谁知道呢。消除self.产生不同的错误:CALL-ME used at line 11。添加does Callable to Argable(将自身放回去后)会导致相同的错误。这可以做到吗?知道怎么做吗?


您的代码中有两处不正确:

say random-f.argh;  # *call* random-f and then call .argh on the result

你想打电话.argh on the Callable so:

say &random-f.argh;

其次,你应该能够调用self:你可以在签名中调整这个.argh method:

method argh(&self:) {

所以最终的代码就变成了:

my &random-f = -> $arg  { "Just $arg" };

say random-f("boo");

role Argable {
    method argh(&self:) {
        self( "argh" );
    }
}

&random-f does Argable;

say &random-f.argh;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将角色混合到可调用对象中 的相关文章

随机推荐

  • 抽象实体上的核心数据关系

    当一个实体被设置为抽象时 在两个实体之间创建一对一的关系是否合法 抽象实体并不意味着要被实例化 这就是你的原因cannot 创建这样的关系 不过 您可以做的是创建一种关系 其中实体从抽象实体继承 From 苹果的文档 https devel
  • 用于临时变量赋值的 Python 上下文管理器

    我经常需要暂时用其他东西交换变量的值 进行一些依赖于该变量的计算 然后将变量恢复为其原始值 例如 var 0 Assign temporary value and do computation var ori var var 1 do so
  • 这个设计模式的名字是什么?

    假设我需要将应用程序中的文本保存到文件中 但允许用户拥有多种格式 pdf word txt 选择 第一种方法可能是 if extension pdf ExportToPdf file else if extension txt Export
  • 更改 UITableView、iPhone 中滚动条的宽度和颜色

    我只能找到是否要显示滚动条或不使用 tableView showsVerticalScrollIndicator YES NO 但如何自定义滚动条的颜色 宽度以及其他功能 如果可能 任何帮助将不胜感激 EDIT 我从代码片段中得到了这个想法
  • 如何在 AngularJs 中存储和读取会话(值)?

    我在存储和读取会话数据时遇到问题Angularjs 单击按钮后 emp name 应存储在session以及我如何读取存储的 emp namesession plnkr 中的示例 http plnkr co edit aX8A6b91obP
  • 如何在函数式编程中使用多态性? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在不同域的远程计算机上启动 Windows 服务

    我的电脑位于域 A 中 远程服务器位于域 B 中 我想使用 c 或任何其他语言或脚本从我的电脑重新启动服务器上的服务 Notes 我通过 VPN 连接到服务器 这意味着我可以手动 RDP 服务器并可以手动重新启动服务 我无法使用本地服务窗口
  • WCF 错误 未提供客户端证书。在 ClientCredentials 中指定客户端证书

    我正在尝试调用 WCF 服务 我创建了一个自签名证书并安装在我的 localmachine personnal certificates 中 并且我还在我的部分中添加了该证书 但我不明白为什么会出现此错误 这是我的 web config
  • 如何替换子资源请求中的嵌入凭据?

    我在 Ionic 应用程序的控制台中收到此错误 Deprecation Subresource requests whose URLs contain embedded credentials e g https user pass hos
  • 应用程序邀请配置失败 Firebase iOS cocoapods

    我在尝试新版本的 firebase 时遇到了一个构建错误 Terminating app due to uncaught exception com firebase appinvite reason App Invite configur
  • 如何在 JavaScript 中实现函数数组?

    我对 JavaScript 还很陌生 我需要编写一对 20 x 20 矩阵函数 我的所有函数都接受一个数字并返回一个数字 即相同的签名 例如 Myfunctions 1 2 应该返回一对可以在代码中调用的函数 在 Java 中 我通常会实现
  • multiprocessing.Pool.imap_unordered 的内存使用量稳步增长

    我刚刚注意到我的程序在处理大文件时使用越来越多的内存 不过 它一次只处理一行 所以我不明白为什么它会继续使用更多内存 经过大量挖掘 我意识到该程序由三个部分组成 加载数据 一次一行 处理a中的每一行multiprocessing Pool
  • 将元素添加到 xml 文件

    我正在尝试从 C csproj 文件添加和删除元素 该文件的部分内容如下所示 有人可以告诉我如何做以下两件事吗 添加一个元素 如下所示 该行显示 我想添加 这 删除一个元素 例如 假设我想删除 I 行 已在下面指出
  • 应用程序操作:通过动态快捷方式在 Google Assistant 中显示小部件

    考虑到官方文档和代码实验室中显示的选项 我的问题相对简单 但我一直在努力使其工作 我想通过动态快捷方式触发一个小部件在 Google Assistant 中显示 看起来非常简单 但是当实现这样的功能和动态快捷方式时
  • Rails 3 ajax 更新部分在没有页面刷新的情况下不起作用

    我正在开发 Rails 3 购物车 我有一个目录页面 其中显示所有产品 还有一个部分显示购物车的要点 因此 用户添加到购物车的任何产品都会显示在此购物车部分中 现在 这不起作用了 将产品添加到购物车后 我必须点击刷新 否则部分不会更新 这是
  • 如何从不同的活动获取主启动活动的意图?

    我目前正在进行另一项活动 如何获取主启动 Activity 的 Intent Intent launchIntent getIntent 上式中 显然getIntent 不会让我得到正确的Intent我需要的 我怎样才能获得主启动Activ
  • 导出 DLL 中的静态数据

    我有一个 DLL 其中包含一个静态类members I use declspec dllexport 为了利用这个类methods 但是 当我将其链接到另一个项目并尝试编译它时 我收到静态数据的 无法解析的外部符号 错误 例如 在DLL中
  • Python 小版本之间的 Wheel 不兼容性

    我正在 PyPi 上发布一个包 它将支持 Python 3 6 并且希望构建尽可能少的轮子 我读过Python 的轮子包装系统 https packaging python org guides distributing packages
  • javascript函数(输入大于今天日期的日期)

    我是 javascript 的初学者 我需要一个函数来检测用户是否输入日期 并在日期小于今天的日期时提醒他 HTML
  • 将角色混合到可调用对象中

    理论上 你可以在运行时将角色混合到对象中 https docs raku org language objects Mixins of Roles 所以我尝试用一 个函数来做到这一点 my random f gt arg Just arg