考虑以下代码示例,该示例检查两个rects是否相交并将其交集矩形作为可选值返回:
func intersectRect(rect: CGRect, other: CGRect) -> CGRect?
{
let result = CGRectIntersection(rect, other)
return CGRectIsNull(result) ? nil : result
}
我多次使用此帮助程序,通常使用switch
,例如
switch (intersectRect(rectA, other: rectB), intersectRect(rectA, other: rectC))
{
case (.Some(let rX), .None(let rY)): doA()
case (.None(let rX), .Some(let rY)): doB()
default: doC()
}
问题:这可能甚至更短,即直接检查交集矩形而不使用帮助器并返回结果,如果它不是空矩形?