W Swift 3, zastanawiam się, dlaczego jestem w stanie użyć operatora o połowie otwartego zakresu ..<
w Data.subdata(in:), ale nie operatora o zamkniętym zasięgu ...
.Korzystanie z operatora Range w Data.subdata
Szukałem wszędzie, ale nie mogę zrozumieć, dlaczego to daje mi ten błąd: Nie „...” kandydaci produkować oczekiwany kontekstowe typ wyniku «Zakres» (aka «Zakres»)
Oto przykład zarówno jeden, który działa i nie robi:
import Foundation
let x = Data(bytes: [0x0, 0x1])
let y : UInt8 = x.subdata(in: 0..<2).withUnsafeBytes{$0.pointee}
let z : UInt8 = x.subdata(in: 0...1).withUnsafeBytes{$0.pointee} // This fails
Dzięki!
Twój komentarz doprowadziły mnie do nowego wyszukiwania i teraz rozumiem, po przeczytaniu tego: https://oleb.net/blog/2016/09/swift- 3 zakresy /. Jeśli chcesz napisać odpowiedź, chętnie ją zaakceptuję. W Swift wciąż jestem trochę zielony, więc ci nie wyskakują na mnie jak na oczy! Nie zdawałem sobie sprawy, że obaj operatorzy zwrócili różne rodzaje "zakresów". – droussel
Dodałem odpowiedź :) – Hamish