Implicit conversion of unique objects to mutable and immutable

Ali Çehreli acehreli at yahoo.com
Tue Jun 21 16:50:11 PDT 2011


On Tue, 21 Jun 2011 23:02:43 +0000, Jonathan M Davis wrote:

> On 2011-06-21 15:25, Ali Çehreli wrote:
>> (Note: I have a feeling that this must be related to the old 'unique'
>> discussions, which I had somehow managed to stay out of. If so, I
>> apologize for repeating an old story.)
>> 
>> It is most useful for a function to return the most mutable type unless
>> there is good reason not to. Do you agree?
> 
> No. In a lot of cases, what you generally want is immutable, not
> mutable. In particular, if you're talking about strings, we favor
> string, wstring, and dstring over char[], wchar[], or dchar[] unless you
> actually need to alter the string.

I agree with all of that, but it should not be the function that 
restricts the caller. The function should return immutable only when the 
result is really immutable.

If the returned object is mutable and unique, it is pretentious of the 
function to evangelically return immutable. :) Besides, the caller can't 
know whether it was actually mutable but was returned as immutable 
because it was the right thing to do. Otherwise the caller could cast to 
mutable to save a copy.

> immutable is preferred, because it's generally more efficient.

Not in this case because the caller must make a copy to mutate further. 
If the function could return 'unique mutable' and if that could be casted 
to immutable implicitly, then all would be fine.

Ali


More information about the Digitalmars-d-learn mailing list