【发布时间】:2019-12-08 07:48:47
【问题描述】:
我想定义一个函数,该函数将任何具有整数(并且只有整数)作为其元素的维数为 2 的数组作为输入。虽然我知道我不必在 Julia 中指定函数的参数类型,但我想这样做是为了加快速度。
使用类型层次结构,我可以使用以下代码对将整数作为输入的函数执行此操作:
julia> function sum_two(x::Integer)
return x+2
end
sum_two (generic function with 1 method)
julia> sum_two(Int8(4))
6
julia> sum_two(Int16(4))
但是,当我尝试对 Array{Integer,2} 类型执行此操作时,我收到以下错误:
julia> function sum_array(x::Array{Integer,2})
return sum(x)
end
sum_array (generic function with 1 method)
julia> sum_array(ones(Int8,10,10))
ERROR: MethodError: no method matching sum_array(::Array{Int8,2})
Closest candidates are:
sum_array(::Array{Integer,2}) at REPL[4]:2
Stacktrace:
[1] top-level scope at none:0
我无法解决这个问题。一种选择是按以下方式为 Integer 的每个最低级别子类型定义方法:
function sum_array(x::Array{Int8,2})
return sum(x)
end
function sum_array(x::Array{UInt8,2})
return sum(x)
end
.
.
.
但是看起来不太实用。
【问题讨论】:
标签: arrays function types julia