Le mardi 18 août 2015 à 00:37 -0700, Kevin Kunzmann a écrit :
> Hi guys,
>
> So, I recently revisited Julia and fooled around a bit with Julia
> Box. Amazing - this looks like the language I never actually dared
> dreaming of ;) Keep up the greedy work!
>
> That being said, my question might be dumb, but I am struggling with
> the type system of Julia. I want to guarantee that the arguments to a
> function are numerical arrays of dimension 1 - how would I best do
> that in Julia? The problem is that
>
> Array{Number, 1}
>
> exists as a type, but when I get the type system right it should not
> have any subtypes except union. Especially
>
> Array{Float64, 1} <: Array{Number, 1}
>
> evaluates to ' false'. I think I get why this is implemented the way
> it is, however, would it not be most intuitive to have something like
>
> function f(x::Array{Number, 1})
> x
> end
>
>
> What would be the 'Julian' way of doing this?
f{T<:Number}(x::Array{T, 1}) or
f{T<:Number}(x::Vecotr{T})
You're hitting a subtle point which has to do with covariance vs.
invariance of types. This part of the manual should make it clearer,
but feel free to ask for more explanations:
http://docs.julialang.org/en/latest/manual/types/?highlight=covariance#
parametric-composite-types
Regards