I didn't know you could do that. That is a very satisfactory solution, thank you.
-Colin On Friday, 3 July 2015 00:39:53 UTC+10, Tom Breloff wrote: > > I can't comment on exactly why the return argument isn't inferred, but I'm > pretty sure that's a feature that is still actively being worked on by the > core devs. When you need to ensure the correct type from a comprehension, > you should be explicit: > > ... > mldBoot1 = Float64[ mean(sub(lD, 1:size(lD, 1), k)[sub(inds, 1:size(inds, > 1), j)]) for k = 1:size(lD, 2), j = 1:size(inds, 2) ] > ... > > > > On Wednesday, July 1, 2015 at 10:20:51 PM UTC-4, [email protected] > wrote: >> >> Hi all, >> >> I'm on Julia v0.3.10 on Ubuntu 14.04 LTS. The following loop >> comprehension correctly infers the type: >> >> function g() >> x = randn(3, 2) >> inds = rand(1:3, 3, 4) >> y = [ mean(sub(x, 1:size(x, 1), k)[sub(inds, 1:size(inds, 1), j)]) >> for k = 1:size(x, 2), j = 1:size(inds, 2) ] >> println(typeof(y)) >> end >> >> That is, the println statement returns Array{Float64, 2}. >> >> Inside another one of the my functions, I have the following code snippet >> >> function someFunction(lD::Matrix{Float64}, ...) >> >> ... >> >> println(typeof(lD)) >> println(typeof(inds)) >> >> mldBoot1 = [ mean(sub(lD, 1:size(lD, 1), k)[sub(inds, 1:size(inds, >> 1), j)]) for k = 1:size(lD, 2), j = 1:size(inds, 2) ] >> >> println(typeof(mldBoot1)) >> >> .... >> >> end >> >> The three println statements return, in order: >> >> Array{Float64,2} >> Array{Int64,2} >> Array{Any,2} >> >> I've been messing around for a couple of hours now trying to work out why >> it works in my toy example, but not in my more complicated function and >> I've come up with nothing. Anyone else have any ideas? >> >> Cheers, >> >> Colin >> >
