我想做的是编写一个压缩图像的通用函数。
func compress(image: UIImage, withRatio ratio: CGFloat) -> Data? {
return UIImageJPEGRepresentation(image, ratio)
}
但是这里compress()
的ratio
可以是任何CGFloat
值0...∞
,但我只想接受 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/