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

时间:2017-02-13 03:04:29

标签: swift3 closures

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

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

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:12)

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

let number = 1
print(number)

此处,1被分配给中间变量number,然后打印出来。

print(1)

此处,1是一个内联的整数文字,可直接打印。

这同样适用于闭包。

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

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

print((0...10).filter{ $0 % 2 == 0 })

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