Julia中抽象类型数组的用法

The*_*rer 5 arrays strong-typing julia

我在探索朱莉娅,所以我是新手.现在我正在探索其强类型功能.我意识到的是我无法看到数组的抽象类型的用法.让我用一个例子来解释一下:

让我们假设我想创建一个接受实数数组的函数,无论其具体类型如何.我会用:

function f(x::Array{Real})
  # do something
end
Run Code Online (Sandbox Code Playgroud)

如果不提高a,就不能调用此函数 f has no method matching f(::Array{Float64,1})

我想打电话f([1,2,3])f([1.,2.,3.])只要元素的类型是真实的.

我已经读过你可以推广或转换数组(p.eg f(convert(Array{Real}, [1, 2, 3]))左右),但我认为这种方式非常动态且乏味.

有没有其他选择而不是摆脱强类型的行为?

谢谢.

Mat*_* B. 7

以经解扩@ user3580870,你也可以使用typealias,使函数定义有点更简洁:

typealias RealArray{T<:Real} Array{T}
f(x::RealArray) = "do something with $x"
Run Code Online (Sandbox Code Playgroud)

然后你也可以在匿名函数中使用typealias:

g = (x::RealArray) -> "something else with $x"
Run Code Online (Sandbox Code Playgroud)