在lambda表达式内联函数,需要在定义函数使用inline关键字

未使用inline关键字

fun main(arg: Array<String>) {
   print(haha({name ->"$name heihei"  }))
}
fun haha(area: (name:String)->String):String{
    return area("haha")
}

使用inline 关键字

fun main(arg: Array<String>) {
   print(haha({name ->"$name heihei"  }))
}
inline fun haha(area: (name:String)->String):String{
    return area("haha")
}

输出一样

但注意的是,要内联的函数带的lambda不宜过大,否则会造成生产class文件过大


内联部分lambda表达式

fun main(arg: Array<String>) {
   print(haha({name ->"$name 1"},{name ->"$name 2"}))
}
inline fun haha(area: (name:String)->String, noinline area2: (name:String)->String):String{
    return area("haha")+ area2("hehe")
}

关键字noinline不会内联调用函数


 

 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-01-12
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-11-22
  • 2022-12-23
  • 2021-07-30
  • 2022-01-15
相关资源
相似解决方案