Ios Swift中闭包的奇数缩短语法?
我正试着用Swift把我的头完全裹住。我想我了解基本情况。然而,我遇到了一些奇怪的语法,如果有人能理解它的意思,我将不胜感激 我将展示我遇到的缩短语法,但首先我将展示如何在没有缩短语法的情况下编写此代码。我想我理解了下面代码中发生的一切,但我将叙述它以确保:) 好的,我们基本上声明了一个名为Operate的函数,它有两个参数。其中一个参数是数字,它是一个整数数组。第二个参数是闭包,称为外部使用,内部使用算法,它将Int作为参数,并返回Int 好的,很酷,然后函数遍历数组中的所有数字,并对每个数字应用调用闭包算法的结果 好的,这就是函数所做的,现在,让我们用尾随闭包语法调用它 我所做的是调用函数,操纵并传入第一个参数numbers,然后按照后面的闭包语法定义我将要使用的闭包。它接受一个参数,我称之为number,这是一个Int,它返回另一个Int,number*number 这个代码对我来说非常有意义 这是让我绊倒的变种。函数的定义完全相同,但是,函数的调用方式我不理解Ios Swift中闭包的奇数缩短语法?,ios,swift,function,syntax,closures,Ios,Swift,Function,Syntax,Closures,我正试着用Swift把我的头完全裹住。我想我了解基本情况。然而,我遇到了一些奇怪的语法,如果有人能理解它的意思,我将不胜感激 我将展示我遇到的缩短语法,但首先我将展示如何在没有缩短语法的情况下编写此代码。我想我理解了下面代码中发生的一切,但我将叙述它以确保:) 好的,我们基本上声明了一个名为Operate的函数,它有两个参数。其中一个参数是数字,它是一个整数数组。第二个参数是闭包,称为外部使用,内部使用算法,它将Int作为参数,并返回Int 好的,很酷,然后函数遍历数组中的所有数字,并对每个数字
//function
func manipulate(numbers: [Int], using algorithm: (Int) -> Int){
for number in numbers{
let result = algorithm(number)
print("Manipulating \(number) produced \(result)")
}
}
//trailing closure syntax
manipulate(numbers: [1,2,3]){ number in
number * number
}
首先,我们没有指定闭包接受的参数的类型,也没有指定返回值的类型。另外,在这个上下文中,当我们调用函数时,数字是什么意思
如果有人能解释一下这里发生了什么,我将不胜感激。我很确定这是Swift中的一些惯用语法,但我不太明白。
谢谢 在Swift中,不需要指定可以推断的类型。由于
Operate
的闭包参数接受并返回Int
Swift可以推断number
是Int
。Swift 5允许您省略return语句(隐式返回),其中代码块只有一条语句。嗯,很有趣,所以Swift推断该数字是闭包的参数?不完全是。在第一个示例中,该参数也称为number
。在第二种情况下,类型Int
已被推断,而不是显式声明。编译器知道中关键字之前的任何内容都将接收参数OHH okay,并且返回类型也会被推断出来?有趣。这是斯威夫特常用的速记吗?是的。没有人会按照您的第一个示例编写代码。
//function
func manipulate(numbers: [Int], using algorithm: (Int) -> Int){
for number in numbers{
let result = algorithm(number)
print("Manipulating \(number) produced \(result)")
}
}
//trailing closure syntax
manipulate(numbers: [1,2,3]){ number in
number * number
}