arrays - Julia 中抽象类型数组的使用

标签 arrays julia strong-typing

我正在探索 Julia,所以我是新手。现在我正在探索它的强类型特性。我意识到的是,我看不到数组抽象类型的用法。让我用一个例子来解释:

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

function f(x::Array{Real})
  # do something
end

如果不引发 f has no method matching f(::Array{Float64,1}),则永远无法调用此函数

我想调用f([1,2,3])f([1.,2.,3.])只要元素的类型是真实的。

我读到您可以提升或转换数组(例如 f(convert(Array{Real}, [1, 2, 3])) 左右),但我认为这种方式非常不动态且乏味。

除了摆脱强类型行为之外,还有其他选择吗?

谢谢。

最佳答案

通过 @user3580870 扩展解决方案,您也可以使用 typealias使函数定义更简洁:

typealias RealArray{T<:Real} Array{T}
f(x::RealArray) = "do something with $x"

然后你也可以在匿名函数中使用 typealias:
g = (x::RealArray) -> "something else with $x"

关于arrays - Julia 中抽象类型数组的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35717897/

相关文章:

php - Android数组转mysql数据库?

arrays - 复制到数组中(没有大小)

java - 使用线程更改数组中数据的有效方法

r - 子图中共享图例

java - 基于公共(public)类变量对 2 个类数组进行排序

julia - Julia 非线性最小二乘包中的 Levenberg-Marquardt

arrays - 来自函数的 Julia count() 结构数组

objective-c - Objective-C 中是否存在强类型集合?

python - 如何处理 Python 中不同模块的相关对象之间的循环引用?

ocaml - 类型构造函数尚未完全定义