Swift 在将另一个方法作为参数传递的方法中,为什么passs参数不需要传递其参数?

Swift 在将另一个方法作为参数传递的方法中,为什么passs参数不需要传递其参数?,swift,function,Swift,Function,我制作了一个将整数和布尔方法作为参数传递的方法(这个方法需要整数作为参数)。当我调用此方法并传递integer和boolean方法时,代码工作时不需要我在boolean方法中传递integer,这是为什么 (下面的代码不是我自己的,摘自苹果对Swift资源的介绍) func hasAnyMatches(列表:[Int],条件:(Int)->Bool)->Bool{ 对于列表中的项目{ 如果条件(项目){ 返回真值 } } 返回错误 } func lessThanTen(数字:Int)->Bool

我制作了一个将整数和布尔方法作为参数传递的方法(这个方法需要整数作为参数)。当我调用此方法并传递integer和boolean方法时,代码工作时不需要我在boolean方法中传递integer,这是为什么

(下面的代码不是我自己的,摘自苹果对Swift资源的介绍)

func hasAnyMatches(列表:[Int],条件:(Int)->Bool)->Bool{
对于列表中的项目{
如果条件(项目){
返回真值
}
}
返回错误
}
func lessThanTen(数字:Int)->Bool{
返回编号<10
}
变量数=[20,19,2,30,12]
hasAnyMatches(列表:编号,条件:lessThanTen)

例如,在本例中,lessThanTen需要一个整数作为参数传递,但是当我调用hasAnyMatches时,我没有将整数传递给lessThanTen。为什么尽管如此,代码仍然有效

从您的方法定义中可以看出:

for item in list{
  if condition(**item**){
   return true
  }
}

您正在将元素(Int)从列表数组发送到条件方法

从您的方法定义中可以看出:

for item in list{
  if condition(**item**){
   return true
  }
}

您正在将元素(Int)从列表数组发送到条件方法

您需要首先了解什么是真正的方法/函数引用

通常,当向初学者教授函数时,有些人会使用函数机类比。希望你听说过。功能就像一台机器。它接受一些输入(参数),处理输入,并输出一些内容(返回值)。程序中有很多这样的机器

在这个类比中,函数引用就像指向函数机器所在位置的箭头。这就像说“这台机器!”或“那边的那台机器!”

那你为什么不需要这些参数呢

因为函数的参数是由接受函数引用的函数提供的。如果参数是由调用方提供的,那么传递函数引用就没有意义了,对吗

让我们考虑这个代码:

func add(a: Int, b: Int) -> Int { return a + b }

func someFunc(_ param: (Int, Int) -> Int) {
    // some code
}

使用
add(a:1,b:2)
调用
someFunc
在这里是没有意义的,因为您可以只编写
3
。但是如果您通过
add
someFunc
可以调用
add
,使用它想要的任何参数。

您需要首先了解什么是真正的方法/函数引用

通常,当向初学者教授函数时,有些人会使用函数机类比。希望你听说过。功能就像一台机器。它接受一些输入(参数),处理输入,并输出一些内容(返回值)。程序中有很多这样的机器

在这个类比中,函数引用就像指向函数机器所在位置的箭头。这就像说“这台机器!”或“那边的那台机器!”

那你为什么不需要这些参数呢

因为函数的参数是由接受函数引用的函数提供的。如果参数是由调用方提供的,那么传递函数引用就没有意义了,对吗

让我们考虑这个代码:

func add(a: Int, b: Int) -> Int { return a + b }

func someFunc(_ param: (Int, Int) -> Int) {
    // some code
}

使用
add(a:1,b:2)
调用
someFunc
在这里是没有意义的,因为您可以只编写
3
。但是如果您传递
add
someFunc
可以调用
add
,使用它想要的任何参数。

函数本身作为参数传递。然后在
if条件(项){…
调用它,函数本身作为参数传递。然后在
if条件(项){…