一尘不染

是否可以在Swift中访问阴影的顶级函数?

swift

我试图编写一个Int扩展名以将Int限制在特定范围内,如下所示:

extension Int {
  func clamp(left: Int, right: Int) -> Int {
    return min(max(self, left), right)
  }
}

我遇到了编译器错误,过了一会儿我才意识到这min在这里被解释为Int.min,这是最低的常量Int

我可以重新实现,以避免min/,max但是我很好奇:有没有办法可以从Int扩展中引用那些?


阅读 193

收藏
2020-07-07

共1个答案

一尘不染

您可以在前面加上模块名称Swift

extension Int {
    func clamp(left: Int, right: Int) -> Int {
        return Swift.min(Swift.max(self, left), right)
    }
}

只是为了好玩:您得到的结果与

extension Int {
    func clamp(left: Int, right: Int) -> Int {
        return (left ... right).clamp(self ... self).start
    }
}

使用的clamp()方法ClosedInterval

2020-07-07