Jac*_*mos 5 arguments function parameter-passing julia
假设我有一系列具有不同名称的关键字参数的函数
foo(x, y; a=1, b=2) = (a + b) / (x + y)
bar(x, y; c=3, d=4) = (x - y) * (c - d)
Run Code Online (Sandbox Code Playgroud)
假设我有第三个函数,它将函数作为参数。在调用第三个函数时,我希望能够将任何关键字参数传递给前两个函数之一。
master(x, y; fun::Function=foo, args...) = fun(x, y, args...)
Run Code Online (Sandbox Code Playgroud)
尝试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)
Run Code Online (Sandbox Code Playgroud)
有没有办法传递关键字参数而不必反复检查参数名称?
如果问题不清楚,请告诉我,我很乐意澄清。我寻找了其他问题,但我看到的解决方案通常展示了如何获取名称-值对,而不是如何将它们传递给其他带有关键字参数的函数
为了突出答案spencerlyon2在他的评论中给了,用逗号(我的问题是,),而不是一个分号(;)调用时分开关键字参数fun。
错误的:
master(x, y; fun::Function=foo, args...) = fun(x, y, args...)
Run Code Online (Sandbox Code Playgroud)
对:
master(x, y; fun::Function=foo, args...) = fun(x, y; args...)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2074 次 |
| 最近记录: |