On Thursday, 20 April 2017 at 18:28:30 UTC, Atila Neves wrote:
On Monday, 17 April 2017 at 19:38:33 UTC, Kapps wrote:
On Saturday, 15 April 2017 at 20:04:13 UTC, Jonas Drewsen
wrote:
[...]
C# got this feature recently. I didn't expect it to be a
significant difference, but I do find it a substantial
improvement. Not only does it clearly show what goes where,
but it's so much cleaner and more convenient.
I don't understand how
writeln($"{a} times 3 is {a * 3}");
is even marginally better than
writeln(a, " times 3 is ", a * 3); // look ma, works right now!
It's not even fewer characters.
Atila
I find the first one to be cleaner honestly. It shows exactly
where values are coming from, doesn't have a bunch of commas that
can be annoying to match up, and doesn't start and stop a string
multiple times. And for the second one, that's only because
writeln specifically includes overloads to take in multiple
objects and merge them together. This isn't something functions
should have to always do (except in the cases where taking in
multiple arguments is actually more efficient, like presumably
with writeln since it doesn't need to actually merge the string).
It's not like it's a huge missing feature. Having something like
the below isn't too bad:
foo(format("Value of ", a, " * 3 is ", a * 3, "."));
But it's just not as nice as:
foo($"Value of {a} * 3 is {a * 3}.");