There’s an issue where Jeff describes the reasoning here: https://github.com/JuliaLang/julia/issues/5532 <https://github.com/JuliaLang/julia/issues/5532>
> On Sep 16, 2015, at 3:57 PM, j verzani <[email protected]> wrote: > > The return value of the function is value of the last expression evaluated. > For assignment, the right-hand side is always returned. So in `f` you get the > value x*2.0 returned which is 2.0. > > On Wednesday, September 16, 2015 at 3:41:22 PM UTC-4, ggggg wrote: > I was playing around with type declarations and came across an > counterintuitive result. I'm not sure if this is the intended behavior or > not, but it certainly surprised me. > > Consider the functions > function f(x) > > y::Int > > y=x*2.0 > > end > > function g(x) > > y::Int > > y=x*2.0 > > y > > > end > > julia> f(1),g(1) > > > (2.0,2) > > I expected them to behave identically, always returning an Int. But clearly f > returns a Float64. > > > > It seems like in the presence of the type delaration y=x*2.0 is interpreted as > > temp=x*2.0 > > y=Int(temp) > > temp > > is that right? >
