Swift 我不明白这个结尾

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)

我对斯威夫特不熟悉。在weheartswift上读闭包。有一节是关于尾随闭包的。这里有三个问题:

  • 我认为代码中有一些输入错误:函数不应该是func吗
  • 我认为{}中的3行代码只是f:(Int)->(Int)的尾随闭包,但这3行代码中的f(I)意味着什么
  • 当我试图在Playerd中运行此代码时,在void函数的“returnsum”行中出现了一个错误:“returnsum”意外的非void返回值
  • 代码:


    这是您的工作代码:

    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