所以我在尝试使用一些方便的函数扩展Swift整数类型,但我不确定应该扩展哪些协议。
比如说,假设我想实现一个函数来限制一个值的范围(如果它小于最小值就将其设置为最小值,否则如果它大于最大值,则将其设置为最大值)。我的第一个想法是这样的:
extension Int {
func clamp(minimum:Int, maximum:Int) {
if self < minimum { return minimum }
if self > maximum { return maximum }
return self
}
}
这只是一个简单的示例,但它说明了一个问题;如果我现在想要调用这个函数来处理 UInt
,那么自然而然地,我不能这样做,所以我必须添加一个等效于 UInt
的函数,但这对于 UInt16
等类型就不再适用。
我曾尝试过扩展更高层次的东西,使用泛型,但是似乎无法扩展像 IntegerType
这样的协议。
所以,是否有更合适的地方可以放置我的扩展呢?
IntegerType
的扩展中,这样它就会出现在所有整数值中。对我来说,这似乎比一个拥有大量静态函数的IntUtils类更加整洁。 - Haravikk