我想创建一个Swift字典,它将String类型作为其键,将Closures作为其值。以下是我的代码,但它给了我错误:
'@ lvalue与'(String,() - > Void)'不相同
class CommandResolver {
private var commandDict:[String : () -> Void]!
init() {
self.setUpCommandDict();
}
func setUpCommandDict() {
self.commandDict["OpenAssessment_1"] = {
println("I am inside closure");
}
}
}
我试着在StackOverflow上查看关于词典中闭包的其他问题,但它并没有给我任何满意的答案。所以我非常感谢你们的帮助。
答案 0 :(得分:8)
这是要走的路。我不确定为什么你的实现不起作用。
class CommandResolver {
typealias MyBlock = () -> Void
private var commandDict:[String : MyBlock] = [String:MyBlock]()
init() {
self.setUpCommandDict();
}
func setUpCommandDict() {
self.commandDict["OpenAssessment_1"] = {
print("I am inside closure");
}
}
}
答案 1 :(得分:4)
如果您在调用设置功能之前在init
初始化词典,它应该有效:
class CommandResolver {
private var commandDict: [String: () -> Void]
init() {
commandDict = [:]
setUpCommandDict()
}
func setUpCommandDict() {
commandDict["OpenAssessment_1"] = {
println("I am inside closure")
}
}
}