swift之@discardableResult、@inlinable

397 阅读1分钟

@discardableResult:声明在指定函数前面,如果该函数有返回值,使用时没有使用结果,那么不会报警告,否则系统会给出警告(一般一个比较通用的方法才会出现这种问题)

//使用后该函数免除不使用返回值警告
@discardableResult
func getMyName() -> String {
    return "狗蛋"
}

func test() {
    getMyName() //由于没有使用返回值,没有 @discardableResult 则会报警告
    _ = getMyName() //如果没有 @discardableResult 又不使用返回值,需要这么写才能取消警告

}

@inlinable:声明在函数前面,表示内联,该函数在编译期间会被优化,不适用于递归函数,性能会大幅度提升,例如:系统会去除函数的的调用过程,直接像宏定义一样执行函数内部逻辑

//修饰后不能递归调用
@inlinable
func add(a: Int, b: Int) -> Int {
    return a + b;
}

func test() {
    let res = add(10, 12)
    //inlineable内联后,相当于直接展开函数,效率大幅度提要
    //一般用于优化多次调用的函数(但该函数不能自身递归)
    //let res = 10 + 12;
}