Thread overview
Calling functions using mixins
May 01, 2015
Dennis Ritchie
May 01, 2015
anonymous
May 01, 2015
Dennis Ritchie
May 01, 2015
anonymous
May 01, 2015
Ali Çehreli
May 01, 2015
Dennis Ritchie
May 01, 2015
hi,
Is it possible to call functions using mixins in this way?

-----
import std.stdio;

int fooTestMixin() {
	return 5;
}

void main() {

	enum t { fooTestMixin };
	immutable string[] strArr = [ "fooTestMixin" ];

	writeln(mixin(`mixin("t.fooTestMixin")`));
	writeln(mixin(`mixin("strArr[0]")`));
}
May 01, 2015
On Friday, 1 May 2015 at 21:04:10 UTC, Dennis Ritchie wrote:
> hi,
> Is it possible to call functions using mixins in this way?
>
> -----
> import std.stdio;
>
> int fooTestMixin() {
> 	return 5;
> }
>
> void main() {
>
> 	enum t { fooTestMixin };
> 	immutable string[] strArr = [ "fooTestMixin" ];
>
> 	writeln(mixin(`mixin("t.fooTestMixin")`));

Don't know what you're trying to do here.

> 	writeln(mixin(`mixin("strArr[0]")`));

writeln(mixin(`mixin(strArr[0])`));

or without the pointless outer mixin:

writeln(mixin(strArr[0]));

> }

May 01, 2015
On Friday, 1 May 2015 at 21:26:20 UTC, anonymous wrote:
> On Friday, 1 May 2015 at 21:04:10 UTC, Dennis Ritchie wrote:
>> hi,
>> Is it possible to call functions using mixins in this way?
>>
>> -----
>> import std.stdio;
>>
>> int fooTestMixin() {
>> 	return 5;
>> }
>>
>> void main() {
>>
>> 	enum t { fooTestMixin };
>> 	immutable string[] strArr = [ "fooTestMixin" ];
>>
>> 	writeln(mixin(`mixin("t.fooTestMixin")`));
>
> Don't know what you're trying to do here.
>
>> 	writeln(mixin(`mixin("strArr[0]")`));
>
> writeln(mixin(`mixin(strArr[0])`));
>
> or without the pointless outer mixin:
>
> writeln(mixin(strArr[0]));
>
>> }

Thanks.
My final goal is to do something like this:

-----
import std.stdio, std.string;

int foo() {
	return 5;
}

int bar() {
	return 10;
}

void main()
{
	immutable string[] s = [ "foo", "bar" ];

	writeln(mixin(`format("%(%s, %)", s)`));;
}
May 01, 2015
On Friday, 1 May 2015 at 21:41:10 UTC, Dennis Ritchie wrote:
> My final goal is to do something like this:
>
> -----
> import std.stdio, std.string;
>
> int foo() {
> 	return 5;
> }
>
> int bar() {
> 	return 10;
> }
>
> void main()
> {
> 	immutable string[] s = [ "foo", "bar" ];
>
> 	writeln(mixin(`format("%(%s, %)", s)`));;
> }

What's that supposed to do?
May 01, 2015
On 05/01/2015 02:41 PM, Dennis Ritchie wrote:

>      immutable string[] s = [ "foo", "bar" ];
>
>      writeln(mixin(`format("%(%s, %)", s)`));;

If you are trying to call those functions, remove the double quotes by %-(, and use %| to specify what is a delimiter. To call, each needs a semicolon:

    mixin(format("%-(%s();%| %)", s));

If you wanted to print the results of calling those functions, then, yes, use a comma. Also, I think you need to put "writeln" inside as well:

    mixin(format("writeln(%-(%s(), %));", s));

Ali

May 01, 2015
On Friday, 1 May 2015 at 21:50:51 UTC, anonymous wrote:
> What's that supposed to do?

Excuse me, what is not said. I thought that my wish will be obvious.

On Friday, 1 May 2015 at 21:59:31 UTC, Ali Çehreli wrote:
> On 05/01/2015 02:41 PM, Dennis Ritchie wrote:
>
> >      immutable string[] s = [ "foo", "bar" ];
> >
> >      writeln(mixin(`format("%(%s, %)", s)`));;
>
> If you are trying to call those functions, remove the double quotes by %-(, and use %| to specify what is a delimiter. To call, each needs a semicolon:
>
>     mixin(format("%-(%s();%| %)", s));
>
> If you wanted to print the results of calling those functions, then, yes, use a comma. Also, I think you need to put "writeln" inside as well:
>
>     mixin(format("writeln(%-(%s(), %));", s));
>
> Ali

Thanks. Yes, I wanted to print the results of calling these functions.