1. inline closure(内联闭包)
stack overflow
内联值是直接使用,没有被赋值给变量的值,例如:
let number = 1
print(number)
这里,1
被赋值给number
,随后number被打印出来了
print(1)
这里1
就是一个内联值,没有被赋值,直接打印出来了。
对于闭包,同理:
let evenNumberFilter: (Int) -> Bool = { $0 % 2 == 0 }
print((0...10).filter(evenNumberFilter))
这里{ $0 % 2 == 0 }
被赋值给了常量evenNumberFilter
,它没有被直接使用,不是内联闭包
print((0...10).filter{ $0 % 2 == 0 })
这里{ $0 % 2 == 0 }
就是内联闭包,它被直接拿来使用,没有赋值给其他常量或变量。
2. inout关键词
You write an in-out parameter by placing the inout keyword right before a
parameter's type. An in-out parameter has a value that is passed in to the
function, is modified by the function, and is passed back out of the function to
replace the original value.
inout
关键词用来修饰函数中的参数,表示函数参数可修改,本质是对参数值进行了引用传递。
var mn = 1
test(a: &mn)
print(mn)
func test(a: inout Int) {
a = 10
}