So what's the preferred Julia syntax to achieve what I meant here:

julia> fmt = "%8.1e";
julia> @sprintf(fmt, 3.1415)
ERROR: first or second argument must be a format string



On Sunday, April 13, 2014 1:31:57 PM UTC-7, John Myles White wrote:
>
> As far as the macro is concerned, the splat isn’t executed: it’s just 
> additional syntax that gets taken in as a whole expression. 
>
> The contrast between how a function with splatting works and how a macro 
> with splatting works might be helpful: 
>
> julia> function splat(a, b...) 
>        println(a) 
>        println(b) 
>        return 
>        end 
> splat (generic function with 2 methods) 
>
> julia> splat(1, 2, 3) 
> 1 
> (2,3) 
>
> julia> splat(1, [2, 3]...) 
> 1 
> (2,3) 
>
> julia> macro splat(a, b...) 
>               println(a) 
>               println(b) 
>               :() 
>               end 
>
> julia> @splat(1, 2, 3) 
> 1 
> (2,3) 
> () 
>
> julia> @splat(1, [2, 3]...) 
> 1 
> (:([2,3]...),) 
> () 
>
>
>  — John 
>
> On Apr 13, 2014, at 1:20 PM, Jeff Waller <[email protected] <javascript:>> 
> wrote: 
>
> > Likewise I am having problems with @sprintf 
> > 
> > Is this because @sprinf is macro?  The shorthand of expanding a printf 
> with format the contents of an array is desirable.  I would have expected 
> the ... operator to take an array of length 2 and turn it into 2 arguments. 
> >     
> >     julia> X=[1 2] 
> >    1x2 Array{Int64,2}: 
> >     1  2 
> > 
> >     julia> @sprintf("%d%d",1,2) 
> >     "12" 
> > 
> >     julia> @sprintf("%d%d",X...) 
> >     ERROR: @sprintf: wrong number of arguments 
> > 
> >     julia> @sprintf("%d%d",(1,2)...) 
> >     ERROR: @sprintf: wrong number of arguments 
> > 
> >     julia> @sprintf("%d",X...) 
> >     ERROR: error compiling anonymous: unsupported or misplaced 
> expression ... in function anonymous 
> >     in sprint at io.jl:460 
> >     in sprint at io.jl:464 
> > 
> >     julia> macroexpand(quote @sprintf("%d%d",X...) end) 
> >     :($(Expr(:error, ErrorException("@sprintf: wrong number of 
> arguments")))) 
> > 
>
>

Reply via email to