ios - Swift 函数可以只接受一定范围的值吗?

标签 ios swift function swift3 uiimage

我想做的是编写一个压缩图像的通用函数。

func compress(image: UIImage, withRatio ratio: CGFloat) -> Data? {
    return UIImageJPEGRepresentation(image, ratio)
}

但是这里compress()ratio可以是任何CGFloat0...∞ ,但我只想接受 0.0...1.0。有办法做到这一点吗?

最佳答案

由于您的函数已经可以返回nil,因此您可以在使用之前检查ratio的值。如果不在您想要的范围内,您可以返回nil

func compress(image: UIImage, withRatio ratio: CGFloat) -> Data? {
    if 0...1 ~= ratio {
        return UIImageJPEGRepresentation(image, ratio)
    } else {
        return nil
    }
}

或者你可以抛出异常:

enum CompressError: Error {
    case ratioOutOfRange
}

func compress(image: UIImage, withRatio ratio: CGFloat) throws -> Data? {
    if 0...1 ~= ratio {
        return UIImageJPEGRepresentation(image, ratio)
    } else {
        throw CompressError.ratioOutOfRange
    }
}

关于ios - Swift 函数可以只接受一定范围的值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45778796/

相关文章:

iphone - 以 Unity3D 作为子项目的 Xcode 工作区?

swift - 如何在 Swift 中获取输入

python - 如何从我的 Python 主函数返回多个字典

C函数只调用一次和圈复杂度

python - 以更好的模式重写我的简单 Python 代码

ios - swift ios 我应该使用核心数据还是数组/结构

iphone - NSString 比较不起作用

ios - 如何自定义 uitextfield 外观

ios - 下载来自 url 的数据时,重新加载位于 uitableviewcell 内的 Collection View

ios - 在不同的滑动 View 之间传递 UIPageViewController 中的数据