That makes a lot of sense, thanks.
On Wednesday, September 16, 2015 at 2:22:54 PM UTC-6, Spencer Russell wrote: > > There’s an issue where Jeff describes the reasoning here: > https://github.com/JuliaLang/julia/issues/5532 > > On Sep 16, 2015, at 3:57 PM, j verzani <jver...@gmail.com <javascript:>> > 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? >> > >