Elegant `bounded` methodology in Swift

前端 未结 3 1638
悲哀的现实
悲哀的现实 2021-01-23 11:09

I\'m looking for a more elegant way to create bounded limiters for numbers, primarily to be used in setters. There are plenty of techniques for determining whether a value falls

3条回答
  •  余生分开走
    2021-01-23 11:51

    A very clean alternative to your if-else statements, keeping the readability would be:

    extension Comparable{
        func clamp(_ min: Self,_ max: Self) -> Self{
            return min...max~=self ? self : (max < self ? max : min)
        }
    }
    

    I think this is a good alternative to using a range as parameter, because, in my opinion, it is annoying to write 6.clamp((4...5)) each time insted of 6.clamp(4,5).

    When it comes to your struct, I think you should not use this clamp extension at all, because, say, 100 does not mean 4... I cannot see the reason for doing this, but it's up to you.

提交回复
热议问题