Don пишет:
> Weed wrote:
>> Don пишет:
>>> Weed wrote:
>>>> Don пишет:
>>>>> Weed wrote:
>>>>>> Frits van Bommel пишет:
>>>>>>> Don wrote:
>>>>>>>> Frits van Bommel wrote:
>>>>>>>>> Don wrote:
>>>>>>>>>> A straightforward first step would be to state in the spec that
>>>>>>>>>> "the
>>>>>>>>>> compiler is entitled to assume that X+=Y yields the same
>>>>>>>>>> result as
>>>>>>>>>> X=X+Y"
>>>>>>>>> That doesn't hold for reference types, does it?
>>>>>>>> I thought it does? Got any counter examples?
>>>>>>> For any class type, with += modifying the object and + returning a
>>>>>>> new one:
>>>>>> The += operator too should return the object (usually "this")
>>>>> ALWAYS 'this'. It's another feature of operator overloading which is
>>>>> redundant.
>>>>
>>>> Not always. Can be more convenient to create the new object and to
>>>> return it.
>>>>
>>>> For example: if it is necessary to return the object containing the
>>>> sorted data those sorting hurriedly at creation of the returned object
>>>> can give a scoring in performance than if the data is sorted in the
>>>> current object after their change.
>>> But then if you have
>>>  y = x+=b;
>>>
>>> surely that would give you x and y being different?
>>> Wouldn't you want x to also point to the new object? (OK, as Stewart
>>> pointed out, you can't!) Otherwise, you have to perform _both_ sorts!
>>
>> I agree, my point of view disputable.
>>
>> The programmer can have a desire to return not current object: the
>> returned and this will be equivalent but are not identical. Do not
>> forget that this object may be not a class - it can be struct and such
>> return can in certain to save a few resources.
>> But if us will force to return this under the threat of a compile error
>> I will not cry.:)
>>
>> And you have certainly noticed that here the solution inaccuracy again
>> appears to divide structures and classes by a principle "on value" and
>> "reference". :)
> 
> Yah. They're almost the same, but not quite. It's interesting that value
> semantics are IMPOSSIBLE with classes (I didn't know that until
> Stewart's post), whereas reference semantics with structs are possible
> (but ugly) with structs.
> 
> In my experience with D, I use structs + templates far more frequently
> than classes + polymorphism. And I suspect that if interfaces were a bit
> more powerful and efficient, struct+interface might replace even more of
> the use cases for class-based run-time polymorphism. So I must admit,
> I'm quite biased against classes.

I am absolutely agree with that that the interfaces too are necessary
for structs.

But whether you by means of templates and mixin repeat an OOP
programming paradigm?

Reply via email to