服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Android - Kotlin如何捕获上下文中的变量与常量详解

Kotlin如何捕获上下文中的变量与常量详解

2022-10-27 14:07Hunter_Arley Android

这篇文章主要给大家介绍了关于Kotlin如何捕获上下文中的变量与常量的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Kotlin具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

Lambda表达式或匿名函数可以访问或修改其所在上下文中的变量和常量,这个过程被称为捕获。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
fun main(args: Array<String>) {
 //定义一个函数,该函数的返回值类型为()->List<String>
 fun makeList(ele: String): () -> List<String> {
  //创建一个不包含任何元素的List
  var list: MutableList<String> = mutableListOf()
  fun addElement(): List<String> {
   //向list集合中添加一个元素
   list.add(ele)
   return list
  }
  return ::addElement
 }
}

上例中顶一个一个局部函数,这个局部函数可访问或修改其所在函数中的变量。

Lambda表达式或匿名函数都会持有一个其所捕获的变量的副本,因此表面上看addElement()访问的是makeList()函数的list集合变量,但只要程序返回一个新的addElement()函数,addElement()函数就会持有一个新的list的副本。

Lambda表达式或匿名函数都会持有一个其所捕获的变量的副本,因此表面上看addElement()访问的是makeList()函数的list集合变量,只要程序返回一个新的addElement()函数,就会持有一个新的list的副本。

?
1
2
3
4
5
6
7
8
9
10
11
fun main(args: Array<String>) {
 println("******add1返回的List**********")
 val add1 = makeList("刘备")
 println(add1())
 println(add1())
 
 println("******add2返回的List**********")
 val add2 = makeList("关羽")
 println(add2())
 println(add2())
}

输出结果:

******add1返回的List**********
[刘备]
[刘备, 刘备]
******add2返回的List**********
[关羽]
[关羽, 关羽]

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对服务器之家的支持。

原文链接:https://www.jianshu.com/p/b95fbc6e53c3

延伸 · 阅读

精彩推荐
  • AndroidAndroid LinearLayout实现自动换行效果

    Android LinearLayout实现自动换行效果

    这篇文章主要为大家详细介绍了Android LinearLayout实现自动换行效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    星辰之力11832022-07-24
  • AndroidAndroid积分签到上移消失动画效果

    Android积分签到上移消失动画效果

    这篇文章主要介绍了Android积分签到上移消失动画效果大致思路:动画部分,由一个垂直的平移和一个透明度变化的两个动画组成。然后通过AnimationSet将两个...

    帅气大果果5202022-02-20
  • Android理解Android中的自定义属性

    理解Android中的自定义属性

    这篇文章主要介绍了理解Android中的自定义属性,在android相关应用开发过程中,固定的一些属性可能满足不了开发的需求,所以需要自定义控件与属性,本...

    鸿洋_11092021-05-21
  • AndroidAndroid中获得手机屏幕大小实现代码

    Android中获得手机屏幕大小实现代码

    这篇文章主要介绍了Android中获得手机屏幕大小实现代码,Android开发中经常需要获得屏幕的宽高,本文直接封装成一个工具类,需要的朋友可以参考下...

    Android开发网10122021-03-26
  • Android一看就懂的Android APP开发入门教程

    一看就懂的Android APP开发入门教程

    这篇文章主要介绍了Android APP开发入门教程,从SDK下载、开发环境搭建、代码编写、APP打包等步骤一一讲解,非常简明的一个Android APP开发入门教程,需要的朋友...

    Android开发网12542021-03-02
  • AndroidAndroid编程中出现The connection to adb is down问题的解决方法

    Android编程中出现The connection to adb is down问题的解决方法

    这篇文章主要介绍了Android编程中出现The connection to adb is down问题的解决方法,涉及Android进程与服务的相关操作技巧,需要的朋友可以参考下...

    logger8252021-04-22
  • AndroidAndroid自定义控件样式实例详解

    Android自定义控件样式实例详解

    这篇文章主要介绍了Android自定义控件样式的方法,结合实例形式分析说明了常见样式的含义与使用方法,需要的朋友可以参考下...

    zqiang_556382021-05-14
  • AndroidAndroid获取手机系统版本等信息的方法

    Android获取手机系统版本等信息的方法

    这篇文章主要介绍了Android获取手机系统版本等信息的方法,涉及Android获取手机版本中各种常见信息的技巧,非常具有实用价值,需要的朋友可以参考下...

    沧海一粟……8912021-03-16