如何返回添加了值的新词典?

时间:2014-09-04 16:40:01

标签: ios swift functional-programming

我正在玩swift的功能性东西。我正在尝试为reduce创建一个累加器函数,它应该以字典开头,然后返回一个添加了值的新字典。

基本上是这样,但current是不可变的。我必须返回一个新的字典,等同于我执行以下操作时的字典:

func newDictionaryWithValueAdded(current:Dictionary<Int, Double>, amount: Int) -> Dictionary<Int, Double> {
    // current[amount] = amount/100
    // return amount
}

有功能吗?类似于数组连词的东西?

1 个答案:

答案 0 :(得分:0)

您可以使用var将函数参数声明为变量。 在以下示例中,current是传递的字典的副本(因为 字典是值类型),但可以在函数中修改:

func newDictionaryWithValueAdded(var current:Dictionary<Int, Double>, amount: Int) -> Dictionary<Int, Double> {
    current[amount] = Double(amount)/100
    return current
}

let dict1 : [Int : Double] = [:]
let dict2 = newDictionaryWithValueAdded(dict1, 12)

println(dict1) // [:]
println(dict2) // [12: 0.12]