array length vs $

Jesse Phillips jessekphillips at gmail.com
Tue Mar 18 08:44:26 PDT 2008


On Tue, 18 Mar 2008 14:48:54 +0000, Pedro Ferreira wrote:

> Frank Benoit escreveu:
>> Given this array:
>>     int[] bar = new int[4];
>> 
>> This is equivalent:
>>     bar[ 1 .. length ] <->  bar[ 1 .. $ ] bar[ length -1 ]   <->  bar[
>>     $-1 ]
>> 
>> 'length' is implicitely declared within [ ].
>> 
>> Since long time i think 'length' should be removed, because it can
>> conflict with a local 'length' variable. We have the special symbol $,
>> which does not have this problem.
>> 
>> I think this matters in case of porting code. 'length' is an often used
>> variable name, especially in code portions acting with arrays. When
>> porting such stuff, all 'length' variables need to be renamed.
>> 
>> But i see no benefit from this 'length'. It seems surprising for me. I
>> always use $. When i see foreign code using 'length', it looks wrong to
>> me.
>> 
>> Implicit 'length' does implicitely disallow the name 'length' for all
>> other integer like variables that are potentially used in array index
>> calculations. In fact, i don't use the name 'length' for any variable
>> in D because of this.
>> 
>> I wish, the implicit 'length' would be deprecated and then removed from
>> D.
>> 
>> Summay:
>>  - One thing/rule more to keep in mind - No benefit
>>  - It exists because it existed before we had $ - Can cause problems
>>  - Restricts the use of the name 'length' for other variables.
>> 
>> Removing 'length' would not break code in unexpected ways. It would
>> yield compile errors in every case and can be fixed by simple replacing
>> 'length' to '$'.
> 
> You have my vote as well. Besides, writing array.$ is much quicker than
>    array.length. Also, $ by in other places has no meaning other than
> length (and tokens such as & and * have), which may make code clearer.
> In my case, length is a common typo, as I am not english and frequently
> end up writing 'lenght' instead.

I don't know if they were interested in getting rid of array.length for 
array.$, just the use in []. I agree with removing it from within [], but 
as for it array.$ maybe we would have both?



More information about the Digitalmars-d mailing list