That sounds great with regards using the printf internals in a more general context.
Now I just tried this: julia> v = 0.1234 0.1234 julia> "$(v, v)" ERROR: syntax: invalid interpolation syntax So for the first "argument" of the tuple it makes sense it has to be a valid expression, but for the second argument it would be cool to support formatted output of whatever the first argument evaluates to. eg: julia> "$(v, %0.2f)" "0.12" julia> "$(v+v, %0.2f)" "0.25" This would be a huge win for making complicated formatting very powerful, succinct, and easy to use without mistakes. On Saturday, June 14, 2014 1:46:26 AM UTC+8, Stefan Karpinski wrote: > > The trouble is that what's inside the parentheses is just an expression > and printf format specifiers are not generally valid expressions. I've been > meaning for a while to take a crack at making some of the printf formatting > machinery a little more generally usable. It's easier now that Jameson, > Keno and Jeff have made it efficient enough to use local variables for the > printf machinery instead of having to use const globals. > > > On Thu, Jun 12, 2014 at 11:05 PM, Andrew Simper <[email protected] > <javascript:>> wrote: > >> Perhaps even the other way around may be better to keep things as similar >> as possible to the regular println syntax: >> >> $(arg, fmt) >> >> v0 = 1.234 >> v1 = 200 >> @print ("some formatted numbers: $(v0, 0.2f), $(v1, 06d)") >> >> >> On Friday, June 13, 2014 10:56:35 AM UTC+8, Andrew Simper wrote: >>> >>> I love the old style c formatting specifiers, they are quick and easy to >>> use. I noticed that there is an @printf macro that will still have the same >>> sort of issues as the old c version in that you have to match the order of >>> vargs to that of the formating string which can lead to errors. I noticed >>> that the println function uses $(var) syntax like php which I think is much >>> better since the variable is inplace in the string. >>> >>> What do people think about keeping the same php type syntax but adding >>> an optional formatting element and making the $(arg) into a tuple $(fmt, >>> arg) so you can't screw up the matching of the format with the argument? >>> >>> so using this type of style: >>> v0 = 1.234 >>> v1 = 200 >>> @print ("some formatted numbers: $(0.2f, v0), $(06d, v1)") >>> >>> >>> instead of the current: >>> @printf("some formatted numbers: %0.2f, %06d", v0, v1) >>> >>> >>> both output: >>> >>> *some formatted numbers: float 1.23, int 000200* >>> >>> >>> >>> >
