How to divide a value on two equal parts, if we only know about a value is Strideable.
func findMiddleBetweenTwo<Point: Strideable>(left: Point, right: Point) -> Point.Stride {
let distance = left.distance(to: right)
let half = distance.howToGetTwoEqualParts ????
}
eskimo
(Quinn “The Eskimo!”)
2
You can’t do this directly because Point.Stride only conforms to Comparable and SignedNumeric, neither of which give you divide. I would solve this by requiring that the stride conform to BinaryInteger [1]:
func findMiddleBetweenTwo<Point: Strideable>(left: Point, right: Point) -> Point where
Point.Stride: BinaryInteger
{
let distance = left.distance(to: right)
let half = distance / 2
return left.advanced(by: half)
}
Share and Enjoy
Quinn “The Eskimo!” @ DTS @ Apple
[1] Or FloatingPoint, depending on what you’re using this for.
Thank you. I supposed that maybe it is possible by iterating over distance and counting iteration steps. But with out dividing it is impossible I see.