Is all this Invarient **** er... stuff, premature optimisation?
Simen Kjaeraas
simen.kjaras at gmail.com
Sun Apr 27 17:28:23 PDT 2008
On Mon, 28 Apr 2008 02:14:19 +0200, Simen Kjaeraas
<simen.kjaras at gmail.com> wrote:
> <p9e883002 at sneakemail.com> wrote:
>
>> Of course, a wasn't really mutated. Instead, args[0] was copied and then
>> mutated and labelled a. Then a was copied and mutated and reassigned the
>> mutated copy.
>>
>> So, that's two copies of the string, plus a slice, plus an extra method
>> call to
>> achieve what used to be achievable in place on the original string.
>> Which is now
>> immutable, but I'll never need it again.
>>
>> Of course, on these short 1-off strings it doesn't matter a hoot. But
>> when the
>> strings are 200 to 500 characters a pop and there are 20,000,000 of
>> them. It
>> matters.
>>
>> Did I suggest this was an optimisation?
>>
>> Whatever immutability-purity cool aid you've been drinking, please go
>> back to
>> coke. And give us usable libraries and sensible implicit conversions.
>> Cos this sucks
>> bigtime.
>>
>> b.
>
>
> Is this what you wanted to write?
>
> int main(string[] args)
> {
> char[] a = cast(char[])args[0];
> a[2..5] = "XXX";
> writefln(a);
> return 0;
> }
> This compiles and runs, and seems to do what you describe. Sure, there's
> a
> cast there, but it's not all that bad, is it?
Sorry, forgot the .toupper() call there. Should be
char[] a = cast(char[])args[0].toupper();
-- Simen
More information about the Digitalmars-d
mailing list