dynamic classes and duck typing
biozic
dransic at free.fr
Sun Nov 29 02:44:56 PST 2009
Le 29/11/09 00:36, Walter Bright a écrit :
> And here it is (called opDispatch, Michel Fortin's suggestion):
>
> http://www.dsource.org/projects/dmd/changeset?new=trunk%2Fsrc@268&old=trunk%2Fsrc@267
>
Seems interesting, but for now the error message when no opDispatch
template can be instantiated looks confusing when trying to use a class
with an opDispatch implemented, and making e.g. a typo error:
=============================================
module lib;
class Test
{
string opDispatch(string name)()
{
static if (name == "foo")
return "foo";
}
}
=============================================
module main;
import lib;
import std.stdio;
void main()
{
auto test = new Test;
writeln(test.foo); // OK
writeln(test.fooo); // Error
}
=============================================
Error is: """
lib.d(5): Error: function lib.Test.opDispatch!("fooo").opDispatch
expected to return a value of type string
lib.d(9): Error: template instance lib.Test.opDispatch!("fooo") error
instantiating
"""
nicolas
More information about the Digitalmars-d
mailing list