gpt4 book ai didi

types - 在 Julia 中键入 kwargs

转载 作者:行者123 更新时间:2023-12-04 22:57:27 26 4
gpt4 key购买 nike

是否可以在 Julia 中键入函数 kwargs?

以下适用于标准 Vararg s。

function int_args(args::Integer...)
args
end

int_args(1, 2, 3)
# (1, 2, 3)

int_args(1, 2, 3.0)
# ERROR: MethodError: `int_args` has no method matching int_args(::Int64, ::Int64, ::Float64)

但是,当将相同的语法应用于 kwargs 时,所有函数调用似乎都会出错。
function int_kwargs(; kwargs::Integer...)
kwargs
end

int_kwargs(x=1, y=2)
# ERROR: MethodError: `__int_kwargs#0__` has no method matching __int_kwargs#0__(::Array{Any,1})

最佳答案

普通关键字参数可以有类型,如 function f(x; a::Int=0) ,但这不适用于“rest”关键字参数。另请注意,由于我们目前不发送关键字参数,a::Int在这种情况下是类型断言而不是调度规范。

看起来这种情况处理得不好,至少需要更好的错误信息。我鼓励您在 https://github.com/JuliaLang/julia/issues 上提出问题.

我不确定 x::T... 的语法是什么应该意味着关键字参数。在可变参数的情况下,很明显 x 的每个元素应该有类型 T ,但对于 rest 关键字参数,每个元素实际上是一个符号-值对。当然我们可以给它你描述的含义(所有值都有类型 T ),但这似乎并不经常出现。与更像列表或数组的可变参数不同,关键字参数往往是非常异构的。

关于types - 在 Julia 中键入 kwargs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39240527/

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