What do you use opDispatch for?

BCS none at anon.com
Mon Mar 22 16:11:20 PDT 2010


Hello Philippe,

> On Sun, Mar 21, 2010 at 23:02, BCS <none at anon.com> wrote:
> 
>> My unitted type uses it for it's value<->unit properties to get a
>> single point of definition for each unit:
>> http://www.dsource.org/projects/scrapple/browser/trunk/units/si2.d
>> 
> Ah, I see, that's nice. You use the received string to feed another
> template
> and generate what you need. Good idea.
> Why did you make OfType opDispatch a static function?

So that "OfType.someunit(val)" becomes a free function.

>> I've also been thinking of a way to build a compile time LINQ like
>> program. If the comparison and boolean operators are overloadable,
>> you could build prepared SQL queries from expressions at compile
>> time.
>> 
>> using(myDatabase.tables.baz.bar)   foreach(Row!(int) row;
>> select!("baz.foo").whare(for.a != someInt && baz.c == bar.c))
>> do(row.foo);
>> 
> If you have a limited number of methods like .whare, why use
> opDispach? (Sorry if my question is naive).

The opDispatch gets used for the .a and .c bits. The above expression would 
get translated so that the !=/== expressions just collect values at runtime 
and pass them off as parameters of a prepared SQL statement whose string 
is built at compile time. For instance the above might result in the following 
string literal being used:

"select baz.foo from baz join bar where a = % and baz.c == bar.c" 

-- 
... <IXOYE><





More information about the Digitalmars-d-learn mailing list