Can ask what the point of the "$(variable)" syntax is? My understanding is 
that is is a hack to allow you to easily and quickly insert the results of 
expressions into strings, ie formatting a value as a string. As it stands 
it is only a marginally useful hack, since most of the time when I format a 
value as a string I want to be able to specify for format. Modifying the 
hack to allow a second argument to be a formatting string would be insanely 
useful, you would watch people ditch using sprintf by the droves (apart 
from porting old c code to julia). 

On Saturday, June 14, 2014 2:06:31 PM UTC+8, Andrew Simper wrote:
>
> 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]> 
>> 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*
>>>>
>>>>
>>>>
>>>>
>>

Reply via email to