DIP 1027---String Interpolation---Community Review Round 1

jmh530 john.michael.hall at gmail.com
Wed Dec 11 14:41:39 UTC 2019


On Wednesday, 11 December 2019 at 11:21:08 UTC, Ola Fosheim 
Grøstad wrote:
> [snip]
> Also, change the prefix to "f", so  that is is similar to other 
> languages like Python.
> [snip]

Python has f interpolation that looks like
print(f'Hello {name}! This is {program}')
but it also has % formatting that looks like
print(‘Hello %(name)s! This is %(program)s.’%(name,program))
This %(name) is probably the closest that compares to this DIP, 
but it seems like the Python 3.6 string interpolation was meant 
to replace that.

Scala also has f interpolation, but they also have s and raw 
interpolation.
The f is like
println(f"$name%s is $height%2.2f meters tall")
the s is like
println(s"Hello, $name")
and the raw is like
raw"a\nb"
The raw strings would correspond to D's r strings.

However, from that string interpolation page from wikipedia, I'm 
not seeing a lot of other examples of languages that use the f. 
Many of the languages on there do not require a prefix, though it 
seems to be mostly dynamic languages. It looks to me like most of 
the languages from the Visual Basic/C# microsoft line of things 
use a $ interpolation as in
Console.WriteLine($"Hello, {name}")

It looks most common to use $var, ${var}, ${expression}, or a 
little more rarely just {var}.

I like Scala's syntax, but you could probably bring together the 
f and s strings by just providing a default if there is no format 
provided.




More information about the Digitalmars-d mailing list