noinline疑惑

来源:6-3 几个有用的高阶函数

正在蜕变的CV工程师

2021-03-26

老师,你好,本篇中的noinline听得有点迷惑,然后上网查了一下

网上说inline函数调用非inline的函数会报错
以下是我的代码

inline fun func(arg1: String, arg0: (Char) -> Unit) {
    fund {
        println("func:$it")
        it
    }

for (ele in arg1.toCharArray()) {
    arg0.invoke(ele)
    }
}

fun fund(arg0: (String) -> String) {
    arg0("fund")
}

========

fun main(){
	   func("HellowWord") {
	        println("$it")
	    }
	    
	    func("HellowWord") {
	        println("$it")
	    }
}

请老师帮我解答以下noinline和crossinline感谢![抱拳][抱拳]

写回答

1回答

bennyhuo

2021-03-26

noinline就是不内联。
crossinline主要用于如果lambda内联后不在调用处的函数调用栈上,这时候nonlocal return是被禁止的。

3
0

学会Kotlin 突破开发语言瓶颈

如果有一门语言可以取代Java,那么它一定是Kotlin。

1760 学习 · 481 问题

查看课程