swift - 是否可以在 Swift 中访问隐藏的顶级函数?

标签 swift

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

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

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

我可以重新实现这个避免 min/max 但我很好奇:有没有办法我可以从 Int 扩展中引用它们?

最佳答案

您可以在模块名称前添加,在本例中为 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
    }
}

使用 ClosedInterval 中的 clamp() 方法。

关于swift - 是否可以在 Swift 中访问隐藏的顶级函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47062799/

相关文章:

objective-c - 在 ClassA 类型的对象上找不到属性 'sharedInstance'

ios - 错误处理: Capture error objects in catch block

ios - 使用 CLLocationManager 获取 iBeacon 邻近更新

arrays - 解析whereKey : equalTo: not working

swift : buffer a very long argument to `Process` with pipe

ios - 从 SceneKit 检测 SpriteKit 按钮按下覆盖

c++ - Xcode 10.3 构建失败 “Undefined symbols for architecture x86_64”

ios - 数据类型为protocol时如何赋值

swift - 如何绘制 "rotating"箭头作为注释?

swift - 在 Swift 5 中使用嵌套字典过滤字典