[swift-users] How to be DRY on ranges and closed ranges?
Jean-Denis Muys
jdmuys at gmail.com
Wed Oct 12 05:21:19 CDT 2016
Hi,
I defined this:
func random(from r: Range<Int>) -> Int {
let from = r.lowerBound
let to = r.upperBound
let rnd = arc4random_uniform(UInt32(to-from))
return from + Int(rnd)
}
so that I can do:
let testRandomValue = random(from: 4..<8)
But this will not let me do:
let otherTestRandomValue = random(from: 4...10)
The error message is a bit cryptic:
“No ‘…’ candidate produce the expected contextual result type ‘Range<Int>’”
What is happening is that 4…10 is not a Range, but a ClosedRange.
Of course I can overload my function above to add a version that takes a ClosedRange.
But this is not very DRY.
What would be a more idiomatic way?
Thanks,
Jean-Denis
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20161012/d2c55d12/attachment.html>
More information about the swift-users
mailing list