2Cu*_*bed 4 types variadic-functions kwargs julia
是否有可能在Julia中键入函数kwargs?
以下适用于标准Varargs.
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)
Run Code Online (Sandbox Code Playgroud)
但是,当将相同的语法应用于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})
Run Code Online (Sandbox Code Playgroud)
普通关键字参数可以包含类型,function f(x; a::Int=0)但这不适用于"rest"关键字参数.另请注意,由于我们当前不调度关键字参数,因此a::Int在这种情况下是类型断言而不是调度规范.
看起来这种情况处理得不好,至少需要更好的错误信息.我建议您通过https://github.com/JuliaLang/julia/issues提交问题.
我不确定语法x::T...对于关键字参数应该是什么意思.对于varargs,很明显每个元素都x应该有类型T,但对于rest关键字参数,每个元素实际上都是符号 - 值对.当然,我们可以给它你描述的含义(所有值都有类型T),但这似乎并不经常出现.关键字参数往往是非常异构的,不像varargs更像是列表或数组.
| 归档时间: |
|
| 查看次数: |
425 次 |
| 最近记录: |