On Sat, 20 Aug 2011 16:49:43 +0900, Jonathan M Davis <[email protected]>
wrote:
On Saturday, August 20, 2011 15:50:37 Masahiro Nakagawa wrote:
On Sat, 20 Aug 2011 05:22:38 +0900, Jonathan M Davis
<[email protected]>
wrote:
> On Friday, August 19, 2011 11:42 Masahiro Nakagawa wrote:
>> On Sat, 20 Aug 2011 02:24:41 +0900, unDEFER <[email protected]>
wrote:
>>
>> [snip]
>>
>> > The fact which the next code
>> > ----
>> > writeln( arr.length );
>> > arr.popFront();
>> > writeln( arr.length );
>> > ----
>> > prints 9 after 10 for any array but for UTF-8 and UTF-16 strings
>> > may
>> > print as well 8 or lesser, seems too confusing for me.
>>
>> You can use std.algorithm.count to count the number of elements.
>>
>> assert([1,2,3].count() == 3);
>> assert("abc".count() == 3);
>> assert("あいう".count() == 3);
>
> The correct function for getting the number of elements for a range is
> std.ronge.walkLength. count will call its predicate (which defaults to
> "true")
> on every member of the range. walkLength, on the other hand, will call
> the
> range's length property if it has one (string and wstring don't have a
> length
> property as far as ranges are concerned, because they're ranges of
> dchar, not
> char or wchar) and simply iterates through the range, counting its
> elements
> otherwise. So, it will be more efficient to call walkLength, and
that's
> what
> it's for. count is for counting the number of elements in the range
> which
> match its predicate, not for counting the number of elements in the
> range.
Yes, I know.
Then I don't understand why you were suggesting that he use count rather
than
walkLength.
I use sometimes count because walkLength is not clear name for me(and
short-name).
I remembered walkLength after send a reply :)
_______________________________________________
phobos mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/phobos