朱莉娅-将关键字参数传递给另一个函数?

雅各布·阿莫斯(Jacob Amos)

假设我有一系列带有不同名称的关键字参数的函数

foo(x, y; a=1, b=2) = (a + b) / (x + y)
bar(x, y; c=3, d=4) = (x - y) * (c - d)

并假设我有第三个函数,该函数将一个函数作为参数。我希望能够在调用此第三个函数时将任何关键字参数传递给前两个函数之一。

master(x, y; fun::Function=foo, args...) = fun(x, y, args...)

尝试master使用关键字参数调用函数时出现我的问题

julia> master(pi, e, fun=bar)
-0.423310825130748

julia> master(pi, e, fun=bar, c=4)
ERROR: MethodError: `bar` has no method matching bar(::Irrational{:π}, ::Irrational{:e}, ::Tuple{Symbol,Int64})
Closest candidates are:
  bar(::Any, ::Any)

有没有一种方法可以通过关键字参数传递而不必反复检查参数名称?

如果问题不清楚,请告诉我,我们很乐意澄清。我在寻找其他问题,但是我看到的解决方案通常显示如何获取名称-值对,而不是如何使用关键字参数将它们传递给其他函数

雅各布·阿莫斯(Jacob Amos)

为了突出显示spencerlyon2在他的评论中给出的答案,我的问题是在调用时使用逗号(,)而不是分号(;)来分隔关键字参数fun

错误的:

master(x, y; fun::Function=foo, args...) = fun(x, y, args...)

正确的:

master(x, y; fun::Function=foo, args...) = fun(x, y; args...)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

朱莉娅的函数句柄

来自分类Dev

朱莉娅:通过map()函数将关键字参数传递给函数

来自分类Dev

朱莉娅:使用splat传递参数

来自分类Dev

朱莉娅参数传递行为

来自分类Dev

朱莉娅:BLAS.gemm!()参数

来自分类Dev

朱莉娅类型依赖函数行为

来自分类Dev

朱莉娅的findlast()函数在哪里?

来自分类Dev

朱莉娅的Init或main函数

来自分类Dev

朱莉娅的内部构造函数

来自分类Dev

朱莉娅的minimumby函数吗?

来自分类Dev

朱莉娅:如何在朱莉娅中随机排列一个向量?

来自分类Dev

朱莉娅:如何在朱莉娅中随机排列一个向量?

来自分类Dev

朱莉娅:一个功能对象

来自分类Dev

朱莉娅:追加到一个空向量

来自分类Dev

朱莉娅:构造函数将函数嵌入类型中

来自分类Dev

朱莉娅:函数式编程:验证数组项对另一个值数组

来自分类Dev

朱莉娅:pmap传递带有索引的向量

来自分类Dev

朱莉娅:在协程之间传递数据(任务)

来自分类Dev

朱莉娅:显示函数体(查找丢失的代码)

来自分类Dev

朱莉娅:函数内部的垃圾回收与全局空间不同

来自分类Dev

朱莉娅剧情函数数组问题

来自分类Dev

朱莉娅中的卡方函数

来自分类Dev

评估函数中的向量或元组(朱莉娅)

来自分类Dev

朱莉娅的函数签名中的“不是子类型”

来自分类Dev

朱莉娅struct内部构造函数可选类型规范

来自分类Dev

朱莉娅函数的问题-输出不显示双重差异

来自分类Dev

朱莉娅-以编程方式生成函数数组

来自分类Dev

朱莉娅-以编程方式生成函数数组

来自分类Dev

朱莉娅-如何使用函数“ imshow”调整图像大小?