Swift中的函数映射

时间:2014-10-20 03:20:12

标签: swift

是否可以在Swift中拥有String:Function的地图?

像这样的东西(不起作用):

let map = [
    "action": func() { print("action!") },
    "error": func() {print("error!") }
]

我可以遵循哪些其他设计模式来实现这一目标?

1 个答案:

答案 0 :(得分:6)

您可以通过将闭包放入词典

来完成此操作
let map = [
    "action": {() in print("action!") },
    "error":  {() in print("error!") }
]

或者通过创建字典外的函数并给它们命名,然后将这些名称传递到Dictionary

func action() {
    print("action!")
}

func error() {
    print("error!")
}

let map = [
    "action": action,
    "error": error
]

看起来你想要的是一个未命名的匿名函数(也就是闭包),这是第一个解决方案给你的。 func关键字只能用于创建命名函数。