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

Types 在Julia中为多种类型的输入定义一个函数,types,julia,Types,Julia,设置:我在Julia中有一个函数,它接受两个输入,x和y。两个输入都是相同类型的数组,其中该类型可以是任何数字类型、日期、日期时间或字符串。注意,不管输入数组的上述任何元素类型如何,函数的内容都是相同的,因此我不想多次写出函数。目前,我的函数定义如下: function MyFunc{T<:Number}(x::Array{T, 1}, y::Array{T, 1}) 函数MyFunc{T答案是使用联合,即 function MyFunc{T<:Union{Number,Date,

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

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

函数MyFunc{T答案是使用
联合
,即

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

(使用Julia 0.6.4语法…查看当前语法)

有趣。我不知道子类型运算符可以用于非嵌套类型的并集。谢谢。我想这意味着像
AnotherFunc{t::union(Float64,String)}(x::Array{t,1})这样的东西会比
AnotherFunc(union(Array)(Array)更可取{Float64,1},数组{String,1}))
,这是正确的吗?再次感谢。我认为这只是可读性的问题,尽管对于这个有两个参数的特定示例,它们实际上意味着不同的东西。参数化版本要求两个数组具有相同的元素类型,但每个参数为并集类型的数组将允许
x
y与众不同。再次感谢。
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