My proposal in the PR is:
julia> show_off(x, y) = (@show x y; nothing)
show_off (generic function with 1 method)
julia> show_off(1, 2)
x = 1
y = 2
julia> (1, 2) |> show_off
ERROR: MethodError: `show_off` has no method matching
show_off(::Tuple{Int64,Int
64})
Closest candidates are:
show_off(::Any, ::Any)
in |> at operators.jl:198
in eval at boot.jl:263
julia> Base.|>(xs::Tuple, f) = f(xs...)
|> (generic function with 7 methods)
julia> (1, 2) |> show_off
x = 1
y = 2
Note: splat *...* is slow, type inference is broken don't use this in
performance critical code. Since this is I/O it's ok I guess. Since |> may
be deprecated, in the future there also may be a package that allows to do
this and extend the functionality beyond, for now you have to define that
method yourself, if you decide t use it you can put the method definition
in you ~/.juliarc.jl configuration file.
El martes, 29 de diciembre de 2015, 11:02:09 (UTC-6), Adrian Salceanu
escribió:
>
> I'm a bit puzzled by the behavior of the pipe operator when feeding values
> to functions expecting multiple arguments. Basically it doesn't seem to
> work at all. Am I missing something?
>
> Ex:
>
> julia> function show_off(x, y)
> println(x)
> println(y)
> end
> show_off (generic function with 1 method)
>
>
> julia> show_off(1, 2)
> 1
> 2
>
>
> julia> 1 |> show_off(2)
> ERROR: MethodError: `show_off` has no method matching show_off(::Int64)
> Closest candidates are:
> show_off(::Any, ::Any)
>
>
> julia> 1,2 |> show_off
> ERROR: MethodError: `show_off` has no method matching show_off(::Int64)
> Closest candidates are:
> show_off(::Any, ::Any)
> in |> at operators.jl:198
>
>
> julia> (1,2) |> show_off
> ERROR: MethodError: `show_off` has no method matching show_off(::Tuple{
> Int64,Int64})
> Closest candidates are:
> show_off(::Any, ::Any)
> in |> at operators.jl:198
>
>