Swift零碎知识集

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
 }

你可能感兴趣的:(Swift零碎知识集)