swift - 如何使闭包更短?
问题描述
如何使闭包更短?我想知道闭包的简单编程。
let closures = { (fillBefore: Bool, fillAfter: Bool) -> String in
if fillBefore && fillAfter {
return kCAFillModeBoth
} else if !fillBefore && fillAfter {
return kCAFillModeBackwards
} else if fillBefore && !fillAfter {
return kCAFillModeForwards
} else {
return kCAFillModeRemoved
}
}
anim?.fillMode = closures((item?.fillBefore)!, (item?.fillAfter)!)
如何让闭包更短?</p>
解决方案
根据您的情况,我认为在某些时候您必须评估两个布尔值,所以我认为没有“更短”的代码来处理它。
但是,您可能正在寻找一种“更整洁”的方法,所以我建议将它们评估为一对布尔值(元组),并switch
声明:
let closure = { (fillBefore: Bool, fillAfter: Bool) -> String in
switch (fillBefore, fillAfter) {
case (true, true):
return kCAFillModeBoth
case (false, true):
return kCAFillModeBackwards
case (true, false):
return kCAFillModeForwards
default: // on your case, it would be the same as (false, false)
return kCAFillModeRemoved
}
}
let myClosure = closure(false,false)
myClosure // removed
推荐阅读
- ibm-mobilefirst - 如何从 WinJS 构建中删除 ui-light.css?
- android - google材料库和设计支持库的区别
- templates - 将模板块与 Golang 中的模板函数结合使用
- ios - Objective-C NSMutableArray 一次处理 15 个项目
- c# - 将网格及其内容保存在文件中 - WPF、C#
- php - 下载 PHP 渲染图像 - 无法在 Android 手机上打开
- java - 使用有界类型变量时参数不匹配
- d - 通过函数调用类
- python - Python 3.初学者与多个错误处理混淆。即尝试和除外
- javascript - react-native clearInterval 在android中不起作用