On Friday, 15 June 2012 at 07:15:50 UTC, Jonathan M Davis wrote:
On Friday, June 15, 2012 09:09:48 Don Clugston wrote:
On 10/06/12 23:43, Jonathan M Davis wrote:
> On Sunday, June 10, 2012 23:23:57 Mehrdad wrote:
>> I honestly don't see the POINT of having a "dynamic array
>> literal".
>>
>> What's the point of making the literals dynamic?
>>
>> They should all be static, and only converted to dynamic if
>> necessary from the context.
>>
>> But I really don't see the benefit of allocating them on
>> the heap
>> just because we can... perhaps someone can enlighten me?
>
> In the vast majority of cases where an array literal is
> used, it's
> assigned to a dynamic array.
I doubt that very much. I know it's not true in my code, I use
array
literals almost exclusively for immutable values.
Usually if you are initializing an array, where you will
modify the
elements later, you want all values to be the same.
I argued that array literals should be immutable, just as
string
literals are. But I lost.
What does immutability have to do with static vs dynamic?
immutable a = [0, 1, 2, 3];
results in an immutable(int[]), not immutable(int[4]).
- Jonathan M Davis
Just a guess here, but I think what Don meant was this:
An immutable _literal_ is quite often "static __gshared" (it's
pretty pointless to make it an instance member...), which means
it's always in memory, which means it should be static (as
opposed to dynamic), since slicing it wouldn't cause problems.