在Swift中,如何理解"内联闭包"?

Vit*_*ang 5 closures swift3

大家.当我阅读Closures时,没有内联闭包的定义.

Q1:如何理解"内联关闭"中的内联?
Q2:"内联闭合"与正常闭合有什么不同?

在此先感谢您的帮助!

Ale*_*ica 12

内联值是直接使用的值,而不首先分配给中间变量.考虑这两个例子:

let number = 1
print(number)
Run Code Online (Sandbox Code Playgroud)

这里,1被分配给一个中间变量,number然后打印出来.

print(1)
Run Code Online (Sandbox Code Playgroud)

这里,1是一个内联的整数文字,直接打印.

这同样适用于闭包.

let evenNumberFilter: (Int) -> Bool = { $0 % 2 == 0 }
print((0...10).filter(evenNumberFilter))
Run Code Online (Sandbox Code Playgroud)

这里{ $0 % 2 == 0 }是一个闭包(类型(Int) -> Bool),evenNumberFilter在使用之前分配给中间变量.

print((0...10).filter{ $0 % 2 == 0 })
Run Code Online (Sandbox Code Playgroud)

在这种情况下,{ $0 % 2 == 0 }直接使用.这是一个内联关闭.