"inout return type" and "inout variable"

Ben Phillips Ben_member at pathlink.com
Thu Mar 16 13:28:09 PST 2006


In article <dvb0tq$1ptf$1 at digitaldaemon.com>, Hong Wing says...
>
>Thanks everyone here for your great work in D, especially Walter who makes it
>all happen.
>Here I am requesting a feature, which is "inout variable" and "inout return
>type"
>Rationale, for the example below,
>
>struct Foo
>{
>int x, int y, int z;
>}
>
>class Bar
>{
>private:
>Foo m_foo;
>public:
>Foo foo() { return m_foo; }
>Foo foo(Foo value) { return m_foo = value; }
>}
>
>now if i want to change the value of m_foo.x to 5, i have to do
>
>Foo foo = bar.foo;
>foo.x   = 5;
>bar.foo = foo;
>
>it would be nice if I can define a return type as "inout Foo"
>inout Foo foo() { return m_foo;}
>
>To extend it further, one might want to define inout variables as
>inout Foo foo = bar.foo;
>
>Advantages:
>
>1. efficiency, one can directly change the states of the struct instead of
>making a copy first, change the copy, and put the result back to the struct
>
>2. less buggy, having to type 3 lines always increases chance of bugs, also,
>someone might inadvertantly do bar.foo.x = 5 and forgot that he is working on a
>copy
>
>3. reduce the use of pointers, the above can be achieved using pointers, but it
>means defining two versions of the same method every time a struct property is
>written.
>
>

This is a good suggestion imho and is probably fairly easy for Walter to
implement as well.





More information about the Digitalmars-d mailing list