gpt4 book ai didi

swift - 不明白这个 Trailing Closure

转载 作者:可可西里 更新时间:2023-11-01 01:38:56 27 4
gpt4 key购买 nike

我是 swift 的新手。正在阅读 weheartswift 上的闭包。有一节讨论尾随闭包。这里有三个问题:

  1. 我认为代码中存在一些拼写错误:函数不应该只是 func 吗?
  2. 我认为 { } 中的 3 行代码只是 f:(Int) -> (Int) 的尾随闭包,但是那 3 行代码中的 f(i) 是什么意思?
  3. 当我尝试在 playground 中运行这段代码时,它在行中给出了这个错误:“return sum”unexpected non-void return value in void function。

代码:

function sum(from: Int, to: Int, f: (Int) -> (Int)) {    

var sum = 0
for i in from...to {
sum += f(i)
}
return sum
}

sum(1, 10) {

$0
} // the sum of the first 10 numbers

sum(1, 10) {

$0 * $0
} // the sum of the first 10 squares

最佳答案

这是您的工作代码:

func sum(from: Int, to: Int, f: (Int) -> (Int)) -> Int{
var sum = 0
for i in from...to {
sum += f(i)
}
return sum
}

sum(1, to: 10) {
$0
} // the sum of the first 10 numbers

sum(1, to: 10) {
$0 * $0
} // the sum of the first 10 squares

根据你的错误,它说你正在声明一个没有任何返回值的函数,但你在最后返回了 Intreturn sum。因此,通过添加 -> Int 来更改您的函数语法,如上面的代码所示,这表明该函数将返回一个 Int 并且它将正常工作。

关于swift - 不明白这个 Trailing Closure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32767844/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com