以下是来自HockeyApp的示例,它生成以下代码:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
BITHockeyManager.sharedHockeyManager().configureWithIdentifier(API_KEY)
BITHockeyManager.sharedHockeyManager().disableCrashManager = true
BITHockeyManager.sharedHockeyManager().startManager()
BITHockeyManager.sharedHockeyManager().authenticator.authenticateInstallation()
return true
}
Run Code Online (Sandbox Code Playgroud)
注意BITHockeyManager.sharedHockeyManager()每次通话中的重复.我正在寻找一种类似(伪代码)的语法:
with BITHockeyManager.sharedHockeyManager() do {
.configureWithIdentifier(API_KEY)
.disableCrashManager = true
.startManager()
.authenticator.authenticateInstallation()
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在Swift中这样做?
编辑:在写完这个问题后,我注意到Alamofire正在使用"可链接的方法",这实际上是我原本想要的.这允许一个简洁的语法,如下(来自http://nshipster.com/alamofire/的代码):
Alamofire.request(.GET, "http://httpbin.org/get")
.response { (request, response, data, error) in
println(request)
println(response)
println(error)
}
Run Code Online (Sandbox Code Playgroud)
要在HockeyApp中使用相应的语法,需要修改BITHockeyManager类.
我不认为那样的东西
with BITHockeyManager.sharedHockeyManager() do {
.configureWithIdentifier(API_KEY)
.disableCrashManager = true
// ...
}
Run Code Online (Sandbox Code Playgroud)
在Swift中是可能的,但你可以做的是定义一个泛型函数
func with<T>(item : T, closure : T -> Void) {
closure(item)
}
Run Code Online (Sandbox Code Playgroud)
它只是用给定的项作为参数调用闭包,然后利用"尾随闭包语法"和"简写参数名称" $0:
with( BITHockeyManager.sharedHockeyManager() ) {
$0.configureWithIdentifier(API_KEY)
$0.disableCrashManager = true
// ...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
190 次 |
| 最近记录: |