On Tuesday, 10 November 2015 at 11:29:32 UTC, TheFlyingFiddle wrote:
On Tuesday, 10 November 2015 at 10:41:52 UTC, tired_eyes wrote:
On Tuesday, 10 November 2015 at 10:33:30 UTC, Tobias Pankrath wrote:
Ruby:
a = 1
b = 4
puts "The number #{a} is less than #{b}"

PHP:
$a = 1;
$b = 4;
echo "The number $a is less than $b";

D:
???

int a = 1, b = 4;
writefln("The number %s is less than %s", a, b);

You can't do it the ruby / perl / php way in D. It could be possible if we had AST macros in the language but as it stands now it's not possible to do that.

the closest you could get is something like this:

string s = aliasFormat!("The number $a is less than $b", a, b);

or

aliasWrite!("The number $a is less than $b", a, b);

Not really recommended though as these would end up creating lots of template bloat.!

You could perhaps do it with a mixin instead of AST macros:

int a = 10;
int b = 20;
writeln(mixin(interp!"The number #{a} is less than #{b}"));


One thing that would make this a lot more elegant would be the ability to instantiate mixins in templates. For example:

template interp(X) {
  alias interp = mixin(interpGenCode!X);
}

writeln(interp!"The number #{a} is less than #{b}");

Quite pleasant syntax this way :)
Not sure if it's feasible to do this on the language side.

Reply via email to