lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


On Mon, Dec 19, 2011 at 12:29 AM, Matthew Frazier
<leafstormrush@gmail.com> wrote:
> On Dec 18, 2011, at 14:22 , Rebel Neurofog wrote:
>
>>> 4)  Add the convenience construt of   x += 123  (and other similar
>>> operators)
>>
>> I would hate Lua for that since there's no such semantics in Lua.
>> And syntax have to reflex semantics.
>>
>> In Python you may write str1 += "Something else\n" and
>> wonder "Why the hell the script is so terribly slow?"
>> '+=' is supposed to mean addition to existing memory block.
>> But Python is similar to Lua about that: it constructs a new string.
>> So Python isn't honest with me. I hope Lua won't ever be like that.
>
> No, "a += b" simply means "a = a + b." That's it. So if "a + b" is slow, "a += b" is also going to be slow. If anything, Python's implementation is wrong because it *doesn't* strictly enforce that relationship, by providing special methods for += and the like. An "append" operation would be something more like Ruby's <<.
>
> Thanks,
> Matthew Frazier
> http://leafstorm.us/
>
>
>

I disagree. Although C++ isn't a language of my love it has great
operator concept.
operator+= increases value IN-PLACE. So you just can't += immutable
(by design) object.
Same thing with strings: you may optimize string growing by reserving 2^N bytes
(where 2^(N -1) < real_size <= 2^N) on each reallocation.

So API can and should give a programmer an idea about what's inside.