After a short discussion in D.learn I have created a tiny enhancement request:
http://d.puremagic.com/issues/show_bug.cgi?id=6361
I show its text here too. It's not essential, it's a minor thing.
Multi-line strings are handy, but I have a small problem with them. This is an
example, it has a problem, there is an unwanted newline at the beginning (the
situation is the same if you use ` instead of "):
string table = "
- First item: 150
- Second item: 200
- Third item: 105";
(If you are just writing such string then you can use just write() followed by
a flush.)
To avoid it you can write this, but both break the alignment in the source
code, and they are not nice looking:
string table = "- First item: 150
- Second item: 200
- Third item: 105";
string table =
"- First item: 150
- Second item: 200
- Third item: 105";
This solution adds one ending newline instead:
writeln(q"EOS
- First item: 150
- Second item: 200
- Third item: 105
EOS");
To solve that problem in Python you use this (in Python """ or ''' denote a
multi-line string):
table = """\
- First item: 150
- Second item: 200
- Third item: 105"""
The extra slash at the beginning avoids the start newline.
I think it's worth adding this little Python syntax detail to D too.
-------------
Note: this syntax is not meant to solve the more general problem in presence of
indentation. In this case you probably need a library solution to de-indent,
etc:
void foo()
{
if(blah)
{
writeln("- First item: 150
- Second item: 200
-- Subitem 1
-- Subitem 2
- Third item: 105");
}
}
(Thanks to Nick Sabalausky and Andrej Mitrovic for the suggestions and
comments.)
Bye,
bearophile