Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

The problem is that `s.index` with an `offset` equal to `limitedBy` returns non-nil index, rather than nil, but that index is invalid (out of bounds) and causes the program to blow up...

    let s = "Swift"
    
    print(s.index(s.startIndex, offsetBy: 4, limitedBy: s.endIndex))
    print(s.index(s.startIndex, offsetBy: 5, limitedBy: s.endIndex))
    print(s.index(s.startIndex, offsetBy: 6, limitedBy: s.endIndex))
outputs:

    Optional(Swift.String.Index(_rawBits: 262401))
    Optional(Swift.String.Index(_rawBits: 327681)) <-  this is unexpected
    nil


The index is perfectly valid; it's just that not every index may be used for subscripting. This is exactly how C++ does it too.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: