将Swift Closures作为值添加到Swift字典中

时间:2014-07-31 20:13:23

标签: ios swift closures

我想创建一个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上查看关于词典中闭包的其他问题,但它并没有给我任何满意的答案。所以我非常感谢你们的帮助。

2 个答案:

答案 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")
        }
    }
}
相关问题