Hi Erica, Wouldn’t this work for @tuuranton’s purposes?
let allUInt8s = UInt8.min.stride(through: UInt8.max, by: 1) allUInt8s.dynamicType // StrideThrough<UInt8>.Type Array(allUInt8s).count // 256 for i in allUInt8s { i // 0...255 } milos > On 8 Apr 2016, at 13:48, tuuranton--- via swift-users <swift-users@swift.org > <mailto:swift-users@swift.org>> wrote: > > The problem with both solutions is that I lose the type information. Instead > of i being UInt8 it is Int or UInt. > > This is one solution I came up with: > > extension UInt8 { > static var allValues: [UInt8] { > var v: [UInt8] = [] > for i in 0..<UInt8.max { > v.append(i) > } > v.append(UInt8.max) > return v > } > } > > print(UInt8.allValues) > > In other words, loop from 0 to 254 and then add 255 manually at the end. > > Is there currently no simpler way to do this in Swift? > > Idea for the Swift developers: Create a Bounded protocol that UInt8 (and the > other integer types) conform to. Then add a "allValues" type method in that > protocol. And also put .min and .max into that protocol. Currently it seems > like .min and .max are not a part of any particular protocol. > > > 8. Apr 2016 14:35 by swift-users@swift.org <mailto:swift-users@swift.org>: > > You could cast the min and max values to an Int and iterate through the Int > range: > > let min = Int(UInt8.min) > let max = Int(UInt8.max) > > for i in min...max { > print(i) > } > > While this will work it seems like a hack to me and Milos’ solution is more > elegant… > > -Pete > > > On Apr 8, 2016, at 5:50 AM, tuuranton--- via swift-users > <swift-users@swift.org <mailto:swift-users@swift.org>> wrote: > > I forgot to mention that I really would like to have i have type UInt8 within > the loop. And since i is UInt8 it makes sense it should be able to take the > values UInt8.min and UInt8.max (and all the values between). > > 8. Apr 2016 11:48 by swift-users@swift.org <mailto:swift-users@swift.org>: > > print(UInt8.min) //0 > > print(UInt8.max) //255 > > > > //Is there an easy way to loop between all values > > //between (and including both) UInt8.min and UInt8.max? > > > > //This doesn't work. > > //Runtime crash because UInt8.max has no successor. > > for i in UInt8.min...UInt8.max { > > print(i) > > } > > > _______________________________________________ > swift-users mailing list > swift-users@swift.org <mailto:swift-users@swift.org> > https://lists.swift.org/mailman/listinfo/swift-users > <https://lists.swift.org/mailman/listinfo/swift-users> > > _______________________________________________ > swift-users mailing list > swift-users@swift.org <mailto:swift-users@swift.org> > https://lists.swift.org/mailman/listinfo/swift-users > On 8 Apr 2016, at 15:21, Erica Sadun via swift-users <swift-users@swift.org> > wrote: > >> >> On Apr 8, 2016, at 3:48 AM, tuuranton--- via swift-users >> <swift-users@swift.org <mailto:swift-users@swift.org>> wrote: >> >> print(UInt8.min) //0 >> >> print(UInt8.max) //255 >> >> >> >> //Is there an easy way to loop between all values >> >> //between (and including both) UInt8.min and UInt8.max? >> >> >> >> //This doesn't work. >> >> //Runtime crash because UInt8.max has no successor. >> >> for i in UInt8.min...UInt8.max { >> >> print(i) >> >> } >> >> > > Easy? No. > > // Range Index has no valid successor > for i in UInt8.min ... UInt8.max { > print(i) > } > > // '...' cannot be applied to two 'UInt8' operands > for i in UInt8.min ... UInt8.max as ClosedInterval { > print(i) > } > > // Stops at 254 > for i in UInt8.min ..< UInt8.max { > print(i) > } > > > This works, but ugh: > > for i : Int in numericCast(UInt8.min)...numericCast(UInt8.max) { > guard let j: UInt8 = UInt8(i) else { fatalError("Nope") } > print(j) > } > > cc'ing in a few people to the white courtesy range phone. > > -- E > > > _______________________________________________ > swift-users mailing list > swift-users@swift.org <mailto:swift-users@swift.org> > https://lists.swift.org/mailman/listinfo/swift-users > <https://lists.swift.org/mailman/listinfo/swift-users>
_______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users