保留嵌套命名参数的默认值

2023-11-26

我怀疑这个问题很容易回答,而且答案是否定的。但是,我想确保我没有遗漏任何东西。

考虑以下代码:

sub f(:$a = 'foo') { say $a }
sub g(:$a) { f :$a }
g();  # OUTPUT: «(Any)»

有没有一个好的方法来更改签名/正文&f or &g这样就打印出foo代替Any?

我知道有两种方法&f使用默认值$a,但他们都不是伟大的。

选项1:

sub f(:$a = 'foo') { say $a }
multi g(:$a) { f :$a }
multi g()    { f }
g();  # OUTPUT: «foo»

选项2:

sub f(:$a = 'foo') { say $a }
sub g(:$a) { f |(:$a with $a) }
g();  # OUTPUT: «foo»

这些都不像是great方法,所以我希望有人能向我展示一种我所缺少的更优雅的方法。另一方面,这两者都有效,所以如果这只是一个稍微不优雅的角落(而且是一个非常小的角落),那肯定不会有什么大不了的。


我会使用选项 1,或者如果子“g”总是只调用子“f”,来创建捕获all参数,然后将其传递:

sub f(str :$a = 'foo') { say $a }
sub g(|c) { f |c }
g a => "bar";  # "bar"
g;             # "foo"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

保留嵌套命名参数的默认值 的相关文章

随机推荐

  • Datadog Grok 解析 - 从嵌套 JSON 中提取字段

    是否可以提取嵌套在日志中的 json 字段 我一直在研究的示例 thread 191555 app main cid 2cacd6f9 546d 41ew a7ce d5d41b39eb8f uid e6ffc3b0 2f39 44f7 8
  • 如何获取已连接 WiFi android 的信号强度?

    我想获取与我的设备连接的 wifi 的信号强度 这可能很容易 但我是初学者 这是作业 如何获得 我尝试了这段代码 但这不起作用 registerReceiver new BroadcastReceiver Override public v
  • 将多个项目发布到Azure网站上的不同位置

    请随意推荐一个更好的标题或更改我下面的解释 我正在使用 Windows Azure 网站 第一次 并将其连接到 Visual Studio Online 中的解决方案 也是我第一次 我还能够连接到 Visual Studio Online
  • 如何使用 django-storages 生成预签名的 S3 url?

    我有一个 Django 表单 它通过 django storages 库将文件保存到 s3 并且工作正常 如何生成并返回预签名 URL 以便用户可以在文件上传后临时访问该文件 这是由 django storages 抽象的还是我必须使用 b
  • Node.js 中的声明 var 是什么?

    在这段nodejs代码中 declare var process NodeJS Process declare var global NodeJS Global declare var console Console declare var
  • 如何防止 csv.DictWriter() 或 writerow() 四舍五入我的浮动?

    我有一本字典想要写入 csv 文件 但是当我将字典中的浮点数写入文件时 它们会被四舍五入 我想保持最大精度 舍入发生在哪里以及如何防止它发生 我做了什么 我跟着DictWriter 示例在这里我正在 Mac 上运行 Python 2 6 1
  • 承诺返回未定义

    我正在尝试使用 Promise 将 ajax 请求发送到 php 脚本 该脚本检查服务器上是否存在文件并返回布尔值 我有以下代码 但 fileExists 函数始终返回未定义 如何将 Promise 包装在函数中并让该函数返回 Promis
  • 使用cloudwatch判断linux服务是否正在运行

    假设我有一个带有服务的 ec2 实例 etc init my service conf有内容 script exec my exec end script 我如何监控该 ec2 实例 以便如果my service停止运行我可以采取行动吗 您
  • 如何在 const 字符串中包含枚举值?

    from 这个问题 我知道一个const string可以是以下的串联const事物 现在 枚举只是一组连续的整数 不是吗 那么为什么这样做不行呢 const string blah blah MyEnum Value1 或这个 const
  • 如何将html存储到mysql数据库中

    我试图将 HTML 存储在数据库中 因此当我从数据库检索表单时 我需要将其显示为表单而不是文本 有没有办法做到这一点 这是表格 form
  • 如何使一个方法接受任何类型的数组作为参数?

    我希望能够将任何数组类型作为方法中的参数 public void foo Array array System out println array length 有没有一种方法可以用相同的方法传递 String 或 int 数组 Use g
  • tomcat服务器无法启动STS中的服务器和应用程序[重复]

    这个问题在这里已经有答案了 当我运行 Spring MVC 应用程序时 出现此异常并且服务器无法启动 请帮我解决这个问题 异常堆栈跟踪 Jan 24 2013 11 33 59 AM org apache catalina startup
  • python 惯用的 python for 循环 if else 语句

    我该如何使用else惯用的 Python 语句for环形 没有else我可以写例如 res i for i in 1 2 3 4 5 if i lt 4 结果是 1 2 3 上述代码的正常形式是 res for i in 1 2 3 4 5
  • 如何通过鼠标悬停播放/暂停多个视频

    我有一个包含很多视频的页面并希望播放 每个视频上mouseOver并暂停mouseOut 它正在与 video1 一起使用 但我想与 video2 一起使用 依此类推 div style text align center div
  • 保护 openpyxl 中的工作簿

    我尝试使用 openpyxl 保护 Excel 工作簿 到目前为止 我已经研究了不同的 可能相关的课程 但我找不到set password方法类似于工作表 恰好有工作簿 保护我尝试过运气的模块 我的代码归结为绝对相关的最小值如下 from
  • 自定义ClassLoader,如何使用?

    我正在尝试使用自定义类加载器来加载应用程序所需的所有依赖项 我已经在网站之后实现了 customerClassLoader https www javacodegeeks com 2013 03 java handmade classloa
  • JavaScript 闭包

    我仍然对 JavaScript 中的闭包概念感到困惑 我的观点是 闭包是内部函数在母函数返回后访问其母函数中创建的变量的能力 但我仍然很困惑 如果我们可以在函数内部创建变量 为什么我们必须创建内部函数来保护局部变量 我们需要创建一个内部函数
  • dom 节点太多导致 JavaScript 性能问题?

    我目前正在调试一个 ajax 聊天 它会无休止地用 DOM 元素填充页面 如果你的聊天持续了大约 3 个小时 你最终会发现上帝现在有多少个 DOM 节点 相关问题有哪些extremeDOM 的使用 UI 是否有可能变得完全无响应 尤其是在
  • 在 python 中从平面列表创建嵌套字典的通用方法

    我正在寻找最简单的generic转换此 python 列表的方法 x foo A bar R baz X foo A bar R baz Y foo B bar S baz X foo A bar S baz Y foo C bar R b
  • 保留嵌套命名参数的默认值

    我怀疑这个问题很容易回答 而且答案是否定的 但是 我想确保我没有遗漏任何东西 考虑以下代码 sub f a foo say a sub g a f a g OUTPUT Any 有没有一个好的方法来更改签名 正文 f or g这样就打印出f