3 ms·
Range is hardly return-type polymorphic. It always returns the same things, you are just free to ignore them, i.e. for k := range map { } is the same thing
by Vendan 9y ago
Range is hardly return-type polymorphic. It always returns the same things, you are just free to ignore them, i.e.
for k := range map { }
is the same thing as
for k, _ := range map { }
Would requiring the second version instead of the first actually be that much of an improvement?
The only true return-type polymorphism is type assertions, which is reasonable in my mind cause I don't think ignoring the "assertion failed" should ever be a logical thing to do.
- candiodari 9y agoOk. Now consider what happens with slices/arrays instead of maps. 1) for k := range list {} 2) for k, i := range list {} In python, the equivalents are: 1) for x in lst: 2) for x, y in enumerate(lst): So are these "the same" ? No.
- Vendan 9y agomore accurately it's for index := range list {} and for index, value := range list {} Yes, these 2 version do perform very similarly, you are just ignoring the second return value in the first version, i.e.: for index, _ := range list {}