gpt4 book ai didi

julia - 如何使用关键字参数为复合函数起别名?

转载 作者:行者123 更新时间:2023-12-05 09:36:56 25 4
gpt4 key购买 nike

我可以像这样给一个函数起别名:

julia> f(y;x=1) = x * y
f (generic function with 2 methods)
julia> const g = f
f (generic function with 1 method)
julia> g(3,x=2)
6

但是,如果我尝试使用复合函数来执行此操作,kwarg 会带来麻烦:

julia> const gg= sqrt ∘ f
#62 (generic function with 1 method)
julia> gg(3,x=2)
ERROR: MethodError: no method matching (::Base.var"#62#63"{typeof(sqrt),typeof(f)})(::Int64; x=2)
Closest candidates are:
#62(::Any...) at operators.jl:875 got unsupported keyword argument "x"

有解决办法吗?我正在尝试将参数传递给 f,然后通过快捷方式(上述 MWE 中的 gg)转换该结果。

最佳答案

您有以下定义:

∘(f, g) = (x...)->f(g(x...))

如您所见,它不支持关键字参数。也许你可以打开一个问题来讨论允许他们。

现在你可以像这样定义你自己的版本:

julia> ⋄(f, g) = (x...; kw...)->f(g(x...; kw...))
⋄ (generic function with 1 method)

julia> f(y;x=1) = x * y
f (generic function with 1 method)

julia> const gg = sqrt ⋄ f
#1 (generic function with 1 method)

julia> gg(3,x=2)
2.449489742783178

编辑:

我已经切换到其他操作系统,我发现 在这里渲染得不是很清晰。我使用了以下符号:

help?> ⋄
"⋄" can be typed by \diamond<tab>

它被定义为允许作为中缀运算符,并且相对容易记住,同时不会掩盖

关于julia - 如何使用关键字参数为复合函数起别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64740010/

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