我正在玩swift的功能性东西。我正在尝试为reduce
创建一个累加器函数,它应该以字典开头,然后返回一个添加了值的新字典。
基本上是这样,但current
是不可变的。我必须返回一个新的字典,等同于我执行以下操作时的字典:
func newDictionaryWithValueAdded(current:Dictionary<Int, Double>, amount: Int) -> Dictionary<Int, Double> {
// current[amount] = amount/100
// return amount
}
有功能吗?类似于数组连词的东西?
答案 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]