On 04/20/2015 11:35 AM, dvic wrote:

> @property string value() { return m_value; } // m_value is a string
> @property int value() { return to!int(m_value); }

Yes, as Jonathan M Davis said, that's weird.

> But when using it in writefln() or assert for example, compiler (dmd)
> complains
> about 2 different property signatures.
>
> What I'd like to have is this:
>
> MyObject.value = "12345"; // write property always setting a string
>
> assert(MyObject.value == "12345");  // depending on the context, call
> 1st prop
> assert(MyObject.value == 12345);  // depending on the context, call 2nd
> prop

I think that would work if multiple 'alias this' were allowed. (There is a pull request that does not pass some tests; that's why it is not included in 2.067.)

struct S
{
    int int_value() { /* ... */ }
    string string_value() { /* ... */ }

    alias int_value this;
    alias string_value this;

    // ...
}

The matching function would be called depending on whether S is used in place of an int or a string.

Ali

Reply via email to