use*_*195 3 closures dictionary swift
有一个问题已经公布了一个已接受的答案但截至今天它没有用.它在Playground中引发了一个错误Expected',' separator

class CommandResolver {
private var commandDict: [String: () -> Void]
init() {
commandDict = [String: () -> Void]()
setUpCommandDict()
}
func setUpCommandDict() {
commandDict["OpenAssessment_1"] = {
println("I am inside closure")
}
}
}
Run Code Online (Sandbox Code Playgroud)
这很可能是编译器中的一个错误.但是,创建空字典时无需重新指定类型.相反,您可以使用空字典文字:
init() {
self.commandDict = [:]
self.setUpCommandDict()
}
Run Code Online (Sandbox Code Playgroud)
字典的类型是从commandDict声明中推断出来的.
我过去使用的另一个解决方案是使用typealias:
class CommandResolver {
typealias CallbackType = () -> Void
private var commandDict: [String: CallbackType]
init() {
self.commandDict = [String: CallbackType]()
self.setUpCommandDict()
}
func setUpCommandDict() {
self.commandDict["OpenAssessment_1"] = {
println("I am inside closure")
}
}
}
Run Code Online (Sandbox Code Playgroud)