This only happens in global scope, not inside a function? If you define
f(list) = return [g(x) for x in list]
then f(xs) will return an Array{Float64,1}.
Op dinsdag 4 november 2014 03:23:36 UTC+1 schreef K leo:
>
> I found that I often have to force this conversion, which is not too
> difficult. The question why comprehension has to build with type Any?
>
>
> On 2014年11月04日 07:06, Miguel Bazdresch wrote:
> > > How could I force the type of gxs1 to be of an array of Float64?
> >
> > The simplest way is:
> >
> > gxs1 = Float64[g(x) for x in xs]
> >
> > -- mb
> >
> > On Mon, Nov 3, 2014 at 6:01 PM, Evan Pu <[email protected]
> <javascript:>
> > <mailto:[email protected] <javascript:>>> wrote:
> >
> > Consider the following interaction:
> >
> > julia> g(x) = 1 / (1 + x)
> > g (generic function with 1 method)
> >
> > julia> typeof(g(1.0))
> > Float64
> >
> > julia> xs = [1.0, 2.0, 3.0, 4.0]
> > 4-element Array{Float64,1}:
> > 1.0
> > 2.0
> > 3.0
> > 4.0
> >
> > julia> gxs1 = [g(x) for x in xs]
> > 4-element Array{Any,1}:
> > 0.5
> > 0.333333
> > 0.25
> > 0.2
> >
> > Why isn't gxs1 type of Array{Float64,1}?
> > How could I force the type of gxs1 to be of an array of Float64?
> >
> > julia> gxs2 = [convert(Float64,g(x)) for x in xs]
> > 4-element Array{Any,1}:
> > 0.5
> > 0.333333
> > 0.25
> > 0.2
> >
> > somehow this doesn't seem to work...
> >
> >
> >
> >
>
>