The review of "SE-0113: Add integral rounding functions to FloatingPoint " ran from June 30 ... July 5, 2016. The proposal has been *accepted*:
The community and core team agree that this proposal helps to “round out" the other Swift 3 numerics work. One minor revision is necessary to make the proposal implementable in Swift 3. Since protocol requirements cannot currently have default arguments, the desired behavior should be achieved with two overloads of each operation:
protocol FloatingPoint {
...
/// Returns a rounded representation of `self`, according to the specified rounding rule.
func rounded() -> Self
func rounded(_ rule: RoundingRule) -> Self
/// Mutating form of `rounded`.
mutating func round()
mutating func round(_ rule: RoundingRule)
}
Where the no argument cases can be implemented with a protocol extension that forwards to the single-argument versions.
Thank you to Karl Wagner for driving this discussion forward! I filed SR-2010 to track implementation work on this.
I think one more thing needs clarification. Shouldn't the "defaulted" `rounded()` and `round()` be defined as protocol extension methods *without* the possibility to override the default rounding mode in a conforming type? Like so:
The review of "SE-0113: Add integral rounding functions to FloatingPoint " ran from June 30 ... July 5, 2016. The proposal has been *accepted*:
The community and core team agree that this proposal helps to “round out" the other Swift 3 numerics work. One minor revision is necessary to make the proposal implementable in Swift 3. Since protocol requirements cannot currently have default arguments, the desired behavior should be achieved with two overloads of each operation:
protocol FloatingPoint {
...
/// Returns a rounded representation of `self`, according to the specified rounding rule.
func rounded() -> Self
func rounded(_ rule: RoundingRule) -> Self
/// Mutating form of `rounded`.
mutating func round()
mutating func round(_ rule: RoundingRule)
}
Where the no argument cases can be implemented with a protocol extension that forwards to the single-argument versions.
Thank you to Karl Wagner for driving this discussion forward! I filed SR-2010 to track implementation work on this.
I think one more thing needs clarification. Shouldn't the "defaulted" `rounded()` and `round()` be defined as protocol extension methods *without* the possibility to override the default rounding mode in a conforming type? Like so: