[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