rus*_*ish 3 functional-programming ios swift
我编写了一个函数,它遍历给定UIView的超级视图,以获取对特定UIView子类的引用(如果存在)(在本例中为UITableView).使用命令式样式可以很好地工作,但它似乎是一个非常适合'铁路导向编程'的问题.由于我仍然在考虑功能,有人能够推荐一个更优雅的功能版本吗?
func findTableView(var view: UIView) -> UITableView? {
var table: UITableView? = nil
while table == nil {
guard let superView = view.superview else { return nil }
view = superView
table = view as? UITableView
}
return table
}
Run Code Online (Sandbox Code Playgroud)
像这样?
func findTableView(view: UIView) -> UITableView? {
return view as? UITableView ?? view.superview.flatMap(findTableView)
}
Run Code Online (Sandbox Code Playgroud)
这段代码只是一个简短的代码:
func findTableView(view: UIView) -> UITableView? {
if let tableView = view as? UITableView {
return tableView
}
else {
let superview = view.superview
if superview == nil {
return nil
}
else {
return findTableView(superview!)
}
}
}
Run Code Online (Sandbox Code Playgroud)
在枚举上使用"Nil Coalescing Operator"和flatMap(_:)方法Optional.
| 归档时间: |
|
| 查看次数: |
969 次 |
| 最近记录: |