types - 在 Julia 中为多种类型的输入定义一个函数

标签 types julia

设置:我在 Julia 中有一个接受两个输入的函数,xy .两个输入都是相同类型的数组,其中该类型可以是任何数字类型、日期、日期时间或字符串。请注意,无论输入数组的上述任何元素类型如何,该函数的内容都是相同的,因此我不想多次写出该函数。目前,我有这样定义的函数:

function MyFunc{T<:Number}(x::Array{T, 1}, y::Array{T, 1})

显然,这会处理数字大小写,而不是日期、日期时间或字符串。

问题:在 Julia 中编写函数的第一行以适应这些其他类型的最佳实践是什么?请注意,性能很重要。

我的尝试:我可以尝试这样的事情:
function MyFunc{T<:Number}(x::Union(Array{T, 1}, Array{Date, 1}, Array{DateTime, 1}, Array{String, 1}) y::Union(Array{T, 1}, Array{Date, 1}, Array{DateTime, 1}, Array{String, 1}))

但这感觉很笨拙(或者可能不是?)。

友情链接:我想这与我在 Julia 上的另一个 Stack Overflow 问题密切相关,可以在 here 上找到。 .

最佳答案

答案是使用 Union , IE。

function MyFunc{T<:Union{Number,Date,DateTime,String}}(x::Array{T, 1}, y::Array{T, 1})
    @show T
end

...
julia> MyFunc([1.0],[2.0])
T => Float64

julia> MyFunc(["Foo"],["Bar"])
T => ASCIIString

(使用 Julia 0.6.4 语法...查看 stable documentation 了解当前语法)

关于types - 在 Julia 中为多种类型的输入定义一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27220174/

相关文章:

c# - DerivedClass 作为 ParentClass 类型变量的值

package - 在 Julia 中导入板包

julia - 转义符号集合

c - C中头文件中带有struct参数的函数声明

octave - 如何在Julia中对数组执行条件赋值?

matrix - 为什么在 Julia 0.5.0 中索引大型矩阵比 0.4.7 慢 170 倍?

c - 使用 scanf 处理多种数据类型

c# - 是否存在 `var` 可能导致问题的任何情况?

C++ 递归排序算法不需要数组长度