Consistency

Meta via Digitalmars-d digitalmars-d at puremagic.com
Sun Feb 15 10:15:12 PST 2015


On Sunday, 15 February 2015 at 17:18:08 UTC, Steve D wrote:
> Python (built-in)
>
> dict1 = {"a":1,"b":2}
> tup1  = (0,1,2,3)
> arr1  = [0,1,2,3]  # list type
> str1  = "abcd"
>
> print "b" in dict1    # True
O(1) lookup

> print 3 in tup1       # True
O(n) lookup

> print 3 in arr1       # True
O(n) lookup

> print "c" in str1     # True
O(n) lookup

This has been discussed to death here. D is better off than 
Python in this case, as it doesn't hide the fact that it's doing 
an O(n) operation sometimes and an O(1) operation other times.


> print tup1.index(2)   # 2
No way to do this in D

> print arr1.index(2)   # 2
arr1.countUntil(2)

> print str1.index("c") # 2
str1.countUntil("c")


> There is some sort of consistency of use, though they are 
> different sequence/collection types.

The problem is mainly with Tuple, which is not a range (arrays 
and strings are).
You can, however, write a small utility function for this. Now 
that I think about it, it can probably be made O(1) as well.



More information about the Digitalmars-d mailing list