Hello Swift community. I'd like to discuss with you if we need something like
this in Swift 3 or any future Swift version.
As you may know there is no way to constrain a numeric type expect for some
scope internal assertion or precodintions which may produce a runtime error if
the input value is out of the defined bound.
func foo(value: Int) {
assert(value > 0 && value <= 10)
// passed
}
How would it be if Swift would allow us to constraint numeric typs with
ranges/intervals?
func newFoo(value: Int<1...10>) {
// no need for an assertion any more
}
We could go even further and add more then one range/interval:
func someFoo(value: Int<0...20, 40...60>) { /* do some work */ }
Not only integers should have this ability but also floating point types like
Double and Float.
Alternative form might look like this:
Double[1.0...10.0]
Float[0.0...1.0, 10.0...100.0]
One downside of half opened ranges/intervals is the left side of its set. How
do we exclude the left element?
1...10 means 1..<11 equals [1, 11)
But how can we create something like (0.0, 1.0), do we need a strange looking
binary operator 0.0>..<1.0?
What do you think? I'd love to hear any feedback to this.
--
Adrian Zubarev
Sent with Airmail_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution