This is why you see frequently in Julia functions: x = expr ; x
On Wednesday, September 16, 2015 at 5:25:15 PM UTC-4, ggggg wrote: > > 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> 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? >>> >> >>