[swift-users] Looping through all values between UInt8.min and UInt8.max
tuuranton at tutanota.de
tuuranton at tutanota.de
Fri Apr 8 07:48:51 CDT 2016
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 at 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 at 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 at 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 at swift.org
>> https://lists.swift.org/mailman/listinfo/swift-users
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20160408/30bd93d8/attachment.html>
More information about the swift-users
mailing list