gpt4 book ai didi

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

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

我怀疑这个问题很容易回答,答案是否定的。但是,我想确保我没有遗漏任何东西。
考虑以下代码:

sub f(:$a = 'foo') { say $a }
sub g(:$a) { f :$a }
g(); # OUTPUT: «(Any)»
有没有好办法改变 &f的签名/正文?或 &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»
这些都不是很好的方法,所以我希望有人可以向我展示一种我缺少的更优雅的方法。另一方面,这两个都有效,所以如果这只是一个稍微不优雅的角落(而且是一个非常小的角落),那肯定不会有什么大不了的。

最佳答案

我会使用选项 1,或者如果 sub "g"总是只调用 sub "f",来创建所有参数的捕获,然后传递它:

sub f(str :$a = 'foo') { say $a }
sub g(|c) { f |c }
g a => "bar"; # "bar"
g; # "foo"

关于default-value - 保留嵌套命名参数的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66555706/

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