词典中的闭包

时间:2014-12-20 23:12:34

标签: swift dictionary closures

已经发布了一个已接受答案的问题,但截至今天它还没有运作。它在Playground Expected',' separator

中抛出错误

Error

Adding Swift Closures as values to Swift dictionary

class CommandResolver {
    private var commandDict: [String: () -> Void]

    init() {
        commandDict = [String: () -> Void]()
        setUpCommandDict()
    }

    func setUpCommandDict() {
        commandDict["OpenAssessment_1"] = {
            println("I am inside closure")
        }
    }
}

1 个答案:

答案 0 :(得分:5)

这很可能是编译器中的一个错误。但是,创建空字典时无需重新指定类型。相反,您可以使用空字典文字:

init() {
    self.commandDict = [:]
    self.setUpCommandDict()
}

字典的类型是从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")
        }
    }
}