Re: overloading evaluation (treating objects as functions)

2015-05-18 Thread Namespace via Digitalmars-d-learn

On Sunday, 17 May 2015 at 18:49:40 UTC, dan wrote:

Is it possible to define a class F so that
auto f=new F();
writeln("The value of f at 7 is ",f(7));
compiles and works as expected?

So the idea would be to be able to use notation like
f(7)
instead of
f.eval(7)
or something along those lines.

My guess is no, it is impossible to do this, because i can't 
find it on the internet or in Alexandrescu's book.


But it is also possible that everybody considers it so obvious 
that they just don't elaborate on it.  I'd be delighted if 
there were the case, at least if somebody would elaborate on it 
if so.


TIA for any info!

dan


http://dlang.org/operatoroverloading.html#function-call


overloading evaluation (treating objects as functions)

2015-05-18 Thread dan via Digitalmars-d-learn

Is it possible to define a class F so that
auto f=new F();
writeln("The value of f at 7 is ",f(7));
compiles and works as expected?

So the idea would be to be able to use notation like
f(7)
instead of
f.eval(7)
or something along those lines.

My guess is no, it is impossible to do this, because i can't find 
it on the internet or in Alexandrescu's book.


But it is also possible that everybody considers it so obvious 
that they just don't elaborate on it.  I'd be delighted if there 
were the case, at least if somebody would elaborate on it if so.


TIA for any info!

dan


Re: overloading evaluation (treating objects as functions)

2015-05-18 Thread Ali Çehreli via Digitalmars-d-learn

On 05/17/2015 11:49 AM, dan wrote:

i can't find it on the internet


There is the following short section as well:


http://ddili.org/ders/d.en/operator_overloading.html#ix_operator_overloading.opCall

Ali



Re: overloading evaluation (treating objects as functions)

2015-05-18 Thread Gary Willoughby via Digitalmars-d-learn

On Sunday, 17 May 2015 at 18:58:32 UTC, Namespace wrote:

http://dlang.org/operatoroverloading.html#function-call


Like this:

module main;

import std.stdio;

class F
{
int opCall(int value)
{
return value * 2;
}
}

void main(string[] args)
{
auto f = new F();

writeln("The value of f at 7 is ", f(7));
}


Re: overloading evaluation (treating objects as functions)

2015-05-18 Thread dan via Digitalmars-d-learn

Awesome!!

Thanks Gary and namespace (and obviously i gotta improve my 
google-fu).


dan

On Sunday, 17 May 2015 at 19:40:10 UTC, Gary Willoughby wrote:

On Sunday, 17 May 2015 at 18:58:32 UTC, Namespace wrote:

http://dlang.org/operatoroverloading.html#function-call


Like this:

module main;

import std.stdio;

class F
{
int opCall(int value)
{
return value * 2;
}
}

void main(string[] args)
{
auto f = new F();

writeln("The value of f at 7 is ", f(7));
}