gpt4 book ai didi

function - Julia - 将关键字参数传递给另一个函数?

转载 作者:行者123 更新时间:2023-12-02 08:22:00 24 4
gpt4 key购买 nike

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

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)

有没有办法通过关键字参数而不必反复检查参数名称?

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

最佳答案

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

错误的:

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

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

关于function - Julia - 将关键字参数传递给另一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36273295/

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