使用“ - >”的目的是什么?在Swift中的变量?

时间:2015-07-09 00:49:34

标签: swift

我正在关注Apple的电子书“The Swift Programming Language”。在其中,有一个代码示例创建一个函数。这个函数最后使用“ - > Bool”,我理解这意味着函数将有一个布尔输出。

要配置该功能,它使用两个输入变量。其中一个变量是“Int - > Bool”(见下面的代码)。也许稍后在电子书中有更好的解释,但我的搜索无法解释我将如何以及为何使用“ - >”对变量的命名法。

func hasAnyMatches(list: [Int], condition: Int -> Bool) -> Bool {
    for item in list {
        if condition(item) {
            return true
        }
    }
    return false
}
func lessThanTen(number: Int) -> Bool {
    return number < 10
}
var numbers = [20, 19, 10, 12]
hasAnyMatches(numbers, lessThanTen)

由于没有真正解释过,我可以阅读代码示例的最好方法是“条件”变量实际上不是变量而是函数本身。因此,我阅读代码的方式如下:

“condition是一个接受整数并返回布尔变量的函数。”

这个假设是否正确?

谢谢。

1 个答案:

答案 0 :(得分:4)

你的假设是正确的。在Swift中,函数可以作为函数中的参数传递。

据我所知,您引用的代码来自Apple&#34; The Swift Programming Language&#34;电子书。附近,它声明:

  

“一个函数可以将另一个函数作为其参数之一。”

基本上,这里发生的是你创造了一个功能,&#34; lessThanTen()&#34;接受一个I​​nt参数并返回一个Bool值。接下来,您将创建另一个函数,&#34; hasAnyMatches&#34;它本身使用一个函数(即Int - &gt; Bool)。如果您有不同的函数来获取和返回相同的值类型,但这些函数具有不同的用途,那么这将非常有用。

然后,您可以将原始函数作为参数传递,就像变量一样。该函数可以采用任何形式,只要它满足第二个函数指定的条件(即&#34;条件:Int - &gt; Bool&#34;)。

总之,在第二个功能中你有一行

if condition(item) {

基本上,这一行运行函数&#34; condition&#34;实际上,这只是另一个作为参数传递的函数。我可以创建任何接受Int并返回Bool值的函数,然后将其传递给&#34; hasAnyMatches&#34;。

如果您想了解更多相关内容,我建议您继续深入研究&#34; The Swift Programming Language&#34;到标题为&#34;功能&#34;的章节。它说:

  

“您可以使用函数类型,例如(Int,Int) - &gt; Int作为另一个函数的参数类型。这使您可以为函数调用者保留函数实现的某些方面,以便在调用函数时提供。“(第141页)

我希望这能回答你的问题:)