DIP 1027---String Interpolation---Format Assessment
Adam D. Ruppe
destructionator at gmail.com
Thu Feb 27 15:12:23 UTC 2020
On Thursday, 27 February 2020 at 14:47:55 UTC, SealabJaster wrote:
> At that point, it begs the question of why even bother having
> string interpolation.
I encourage you to read my document too:
https://github.com/dlang/DIPs/pull/186
It addresses all these concerns. Walter's proposal is dead. It
has been formally rejected. We shouldn't waste more time talking
about it.
> I'd like to imagine that most newcomers/returning veterans of D
> would see "D has string interpolation!" and then expect it to
> work similar to how it does in most other languages.
My proposal doesn't work exactly like in other languages - it is
uniquely D so we don't waste our potential. It does everything C#
can do, except the implicit conversion to string... BUT, if you
assume it is the same as other languages, you get a compile
error, and the error message tells you how to convert it to a
regular string!
f(i"hello $a");
error: cannot implicitly convert argument of type interpolated
tuple to type string. Tip: use `.idup` to explicitly convert it
to string.
f(i"hello $a".idup); // works almost like other languages now!
f2(i"hello $a", i"hello $b"); // type mismatch error, try idup
f2(i"hello $a".idup, i"hello $b".idup); // works
So education wise, it is only a few seconds: if you use it like
in other languages, it doesn't work, but the compiler tells you
how to fix it.
If you find the error or `.idup` method unacceptable, then... I'm
sorry, but you aren't going to win that one. We've already argued
this at length and the community is not willing to lose what we'd
lose (ref, scope, compile-time usage, and more) by making that
work; the trade-offs are too steep.
More information about the Digitalmars-d-announce
mailing list