如何使Julia多调度层次结构处理数组内容



我想要一个函数,它接受一个数字数组并对它们进行一些运算。为此,我创建了函数

function squarearray(numinarray::Vector{Number})
numinarray[1]^2
end

但当我试着用来称呼它时

print(squarearray(Vector([1.0])))

它导致了一个错误:

错误:LoadError:MethodError:没有匹配squearray(::Vector{Float64}

Float64Number的一个子类型,为什么这不起作用?我知道我可以在函数中指定它在浮点数组中接受的值,但我也希望函数能处理int。

谢谢!

-Diego

;数字";类型为抽象。这意味着没有数据可以直接属于Number类型。但是,正如您所指出的,Number有具体的子类型,例如Float64。如果您更改

numinarray::Vector{<:Number} #limits to only subtypes of Number

numinarray::Vector{Float64} #limits to Float64 type

numinarray::Vector #Does not limit inputs

你应该避免这个问题。

最新更新