Swift 我不明白这个结尾
我对斯威夫特不熟悉。在weheartswift上读闭包。有一节是关于尾随闭包的。这里有三个问题:Swift 我不明白这个结尾,swift,swift2,Swift,Swift2,我对斯威夫特不熟悉。在weheartswift上读闭包。有一节是关于尾随闭包的。这里有三个问题: 我认为代码中有一些输入错误:函数不应该是func吗 我认为{}中的3行代码只是f:(Int)->(Int)的尾随闭包,但这3行代码中的f(I)意味着什么 当我试图在Playerd中运行此代码时,在void函数的“returnsum”行中出现了一个错误:“returnsum”意外的非void返回值 代码: 这是您的工作代码: func sum(from: Int, to: Int, f: (Int)
这是您的工作代码:
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
根据您的错误,它表示您正在声明一个函数,该函数没有任何返回值,但您在末尾使用返回和返回返回
返回Int
。因此,通过添加->Int
来更改上述代码中所示的函数语法,这表示该函数将返回Int
,并且它将正常工作。感谢Dharmesh再次更新我的格式,我真的需要在下一次修改它,f(I)在这里是什么意思?这是另一个小小的终结吗?它以“i”作为输入并返回另一个“int”,但如何返回?当您在开始时在函数语法中声明时,它是一个类型为(int)->(int)
的闭包,它以i
作为输入并返回另一个int
。而Int
将添加到sum
实例中。那么,这个小f(Int)->(Int)闭包的语句在哪里?如果没有语句,我们就假设它以输入作为输出?用i
替换f(i)
,然后检查结果。我明白了,我一直认为我们需要这些格式来处理语句“{(语句中的参数)}”,看起来它可以进一步简化。你的评论很有启发性
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