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