And*_*nko 2 pattern-matching swift
今天我发现了一段笨拙的代码:
if segue.identifier == "settings" {
if let settingsController = segue.destination as? SettingsController
{
//...setup settings controller here
}
} else if segue.identifier == "mocks" {
if let mocksController = segue.destination as? MocksController
{
//...setup mocks controller here controller here
}
}
//... and a lot of if-elses
Run Code Online (Sandbox Code Playgroud)
我真的很讨厌if-else-if在我的代码中决定重构这篇文章switch.不幸的是,我对快速模式匹配的了解非常有限,所以我能做的最好的事情是:
switch segue.identifier! {
case "mocks" where segue.destination is MocksController:
let mocksController = segue.destination as! MocksController
// do corresponding staff here
break
case "settings" where segue.destination is SettingsController:
let settingsController = segue.destination as! SettingsController
// do corresponding staff here
break
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否可以使用模式匹配从对象中提取identifier和destination属性,segue如下面的伪代码:
switch segue {
case let destination, let identifier where destination is ... && identifier == "...":
//do somthing
break
}
Run Code Online (Sandbox Code Playgroud)
是的,这完全有可能.斯威夫特是强大的;)
switch (segue.identifier, segue.destination) {
case let ("mocks"?, mocksController as MocksController):
// do corresponding stuff here
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
244 次 |
| 最近记录: |