Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 对Dictionary.reduce()中的$0感到困惑_Swift_Swift3 - Fatal编程技术网

Swift 对Dictionary.reduce()中的$0感到困惑

Swift 对Dictionary.reduce()中的$0感到困惑,swift,swift3,Swift,Swift3,我试图计算股票的总价值,正确的答案是: let stock = [1.5:5, 10:2, 4.99:20, 2.30:5, 8.19:30] let stockSum = stock.reduce(0, { $0 + $1.key * Double($1.value) }) 但我的想法是: ... let stockSum = stock.reduce(0, { $0.key * Double($0.value) + $1.key * Double($1.value) }

我试图计算股票的总价值,正确的答案是:

let stock = [1.5:5, 10:2, 4.99:20, 2.30:5, 8.19:30]
let stockSum = stock.reduce(0, { 
    $0 + $1.key * Double($1.value)
})
但我的想法是:

...
let stockSum = stock.reduce(0, { 
    $0.key * Double($0.value) + $1.key * Double($1.value)
})

它肯定会返回错误,任何人都可以帮我解释一下吗?

下面是reduce方法的参数列表


在您的例子中,0被分配给initialResult,这实际上是在迭代时将总和保存到某一点。此initialResult作为$0中的第一个参数传入,而dictionaries的key,value作为$1中的第二个参数传入。因此,您可以看到$1.key和$1.value

$0表示合计的部分金额。没有键值属性$1表示您的字典您的代码也可以写成let stockSum=stock.reduce0{total,dic in total+dic.key*Doubledic.value},这样您就可以更好地理解那里发生了什么。
reduce(initialResult: Result, nextPartialResult: (Result, (key: Double, value: Int)) throws -> Result)