To start with, semicolons act differently when you’re in the REPL or IJulia 
compared to in a script. In the REPL/IJulia, the semicolon suppresses 
output, so that there’s a difference between

julia> 3;

and

julia> 3
3

but in a script no output is produced without explicit print statement 
irregardless of semicolons.

I think your confusion might stem from thinking that 2; would actually 
parse as begin 2; nothing end, but that is - as you noticed - not the case.

To suppress the return value in your code, you probably want this:

function whatev(fun)
    fun()
end
u = whatev() do
    2
    nothing
end
@show u

// T

On Wednesday, October 14, 2015 at 3:05:30 PM UTC+2, Cedric St-Jean wrote:

I keep running into cases where I expect the semi-colon to remove the 
> output (return nothing), but something is returned. Am I misunderstanding 
> the semi-colon's role as a separator, or is that a parser bug?
>
> function whatev(fun)
>     fun()
> end
> u = whatev() do
>     2;
> end
> @show u
> > u = 2
>
>
> ​

Reply via email to