首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Kotlin 作用域函数 runletapplyalso 的使用

上一篇文章我们介绍了作用域函数,并以其中一个作用函数run为例,介绍了作用域函数的使用和原理。...除了run之外,Kotlin 官方还内置了let,apply,also这几个作用域函数,下面我们一起来他们的相同点和区别,并举例说明他们的使用场景。...1. 4 个作用域函数 = 2 个特性的两两组合 run,let,apply,also,这 4 个作用域函数,其实是 2 个特性的组合结果: 调用作用域函数的对象,是作为this传入,还是作为唯一参数(...细心的同学可能已经发现,在 Standard.kt 中,除了run,let,apply,also之外,还有好几个作用域函数。其实掌握了这 4 个作用域函数,已经覆盖了大部分使用场景。...剩下的几个使用需求没有那么的迫切,但掌握之后,可以帮助你写出更有 Kotlin 味道的代码。 下一篇文章会介绍 Standard.kt 中剩余的作用域函数。

1.6K10

《你不知道的JavaScript》:函数作用域和块作用域

而函数作用域的含义是指:属于这个函数的全部变量都可以在整个函数的范围内使用及复用,包括在嵌套的函数作用域中也可以使用。 函数作用域的常规套路是,先声明一个函数,然后向函数中添加代码实现。...除此以外,"隐藏"作用域中的变量和函数还能规避同名标识符之间可能存在的冲突问题。 函数作用域的创建方式 函数作用域的创建需要声明一个函数,而声明函数这个行为又有函数声明和函数表达式两种操作方式。...至于const也是可以创建块作用域中,不同于let的是,其值是固定的常量,任何对其值的修改都会引起错误。 总结一下 js中的作用域,主要有函数作用域和块级作用域,当然还有全局作用域。...函数作用域的使用,可以隐藏代码实现,减少变量暴露,避免命名冲突,符合软件设计的最小特权原则。关于函数作用域,还讲了函数声明与函数表达式的辨别方法和区别。...在函数表达式中,还分出了命名函数表达式和匿名函数表达式。 块级作用域的实现,有赖于ES6的版本进步,提供let和const关键字,可以实现同其他语言相同的由{...}包裹起来的块级作用域。

96930
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【榨干 Kotlin】把函数当类用,Compose 风骚的作用域机制

    这样的话,虽然用的是 Kotlin,但我们还是没法像传统布局文件那样对作用域做规则管理。直白点说就是,你想限制某个属性或者函数只能在指定的函数内部被调用,这是做不到的。 但是!实际情况却不是这样。...就是咱现在说的这种。Compose 通过高阶函数和隐式的 receiver 实现了作用域向外的限制:只能在某个函数调用的大括号内部去访问某些属性和函数,在外面是不行的。对吧?...通过这种方式,我就把 RowScope 和 ColumnScope 标记为「互相隔离作用域」的。...总结 Compose 是用 Kotlin 写的,它享受了 Kotlin 的便利,但也要承受 Kotlin 的限制。它用 Kotlin 的函数来实现了界面组件,就继承了「函数不具备作用域」的缺陷。...但是,通过高阶函数、隐式 receiver 和 DslMarker 注解,Compose 用这样综合的花活解决了作用域管理的问题,还解决得挺好。

    35510

    苹果iOS新手开发之Swift中实现类似Kotlin的作用域函数

    Swift 中虽然没有直接等同于 Kotlin 中作用域函数的内置函数,但可以通过闭包和高阶函数实现类似的功能。Swift 的标准库和扩展方法提供了类似的效果。...这些常用的自定义函数和扩展方法包括: 1. let let 关键字在 Swift 中用于声明常量,并用于条件绑定,但也有人通过扩展开发类似于 Kotlin let 函数的功能。...这可以使用自己的扩展实现: extension Optional { func let(_ transform: (Wrapped) -> U?) -> U?...Kotlin 中的作用域函数,但我们可以通过扩展和函数来实现类似的功能。...这些扩展和函数使得代码更加简洁,可读性更强,实现方式也兼具 Swift 语言的风格。 END 点亮【赞和在看】,让钱和爱都流向你。 心里种花,人生才不会荒芜,如果你也想一起成长,请点个关注吧。

    10010

    Kotlin 如何优雅地使用 Scope Functions

    作用域函数:它是 Kotlin 标准库的函数,其唯一目的是在对象的上下文中执行代码块。 当您在提供了 lambda 表达式的对象上调用此类函数时,它会形成一个临时范围。...本文着重介绍其中最常用的 let、run、apply,以及如何优雅地使用他们。 1.1 apply 函数的使用 apply 函数是指在函数块内可以通过 this 指代该对象,返回值为该对象自己。...1.2 run 函数的使用 run 函数类似于 apply 函数,但是 run 函数返回的是最后一行的值。...在 Kotlin 中借助 Elvis 操作符配合安全调用符,实现简单清晰的空检查和空操作。 //根据client_id查询 request.deviceClientId?....总结 Kotlin 本身是一种很灵活的语言,用好它来写代码不是一件容易的事情,需要不断地去学习和总结。本文仅仅是抛砖引玉,希望能给大家带来更多的启发性。

    94030

    第2章 Kotlin 语法基础第2章 Kotlin 语法基础

    而具体存放的数据占用内存的大小和存放的形式则由其类型来决定。 在Kotlin中, 所有的变量类型都是引用类型。Kotlin的变量分为 val (不可变的) 和var (可变的) 。...因为事实上在程序中大部分地方只需要使用不可变的变量。使用val变量可以带来可预测的行为和线程安全等优点。 变量名就是标识符。标识符是由字母、数字、下划线组成的字符序列,不能以数字开头。...set set 函数 constructor 构造函数 init 初始化代码块 try 异常捕获 catch 异常捕获,结合try使用 finally 异常最终执行代码块 dynamic 动态的 typeof...println(x) } var y = 10 do { y = y + 1 println(y) } while (y 的作用域包含此处...在Kotlin中,除了表达式的值,有返回值的函数都要求显式使用return来返回其值。

    2.7K20

    Python函数的作用和使用

    函数知识点一定要引起重视,因为它很重要,在工作中书写程序的时候会大量的用到函数,使用几率很高,所以就重要了,在学习的时候都当做重点知识点学习。...虽说函数是重点学习对象但是也是属于Python基础教程范畴内的。 学习函数的大致目标: 函数的作用、函数的使用步骤、函数的参数作用、函数的返回值作用、函数的说明文档、函数嵌套。...一、函数的作用 函数含义:函数就是将一段具有独立功能的代码块整合到一个整体并命名,在需要的位置调用这个名称即可完成对应的需求。 函数作用:函数再开发过程中,可以更高效的实现代码重用。...二、函数使用步骤 1、定义函数 def 函数名(参数): 代码1 代码2     ...... 2、调用函数 函数名(参数) 注意: 1.不同的需求,参数可有可无 2.在Python中,...函数必须先定义后使用 三、快速体验函数作用和使用步骤 需求: 复现ATM取钱功能 1、搭建整体框架(复现需求) print('密码正确登录成功') # 显示“选择功能”界面 调用函数 print('查询余额完毕

    72220

    《Kotlin极简教程》第3章 Kotlin语言基础第3章 Kotlin语言基础《Kotlin极简教程》正式上架:参考资料

    所以,所有变量也都是对象(也就是说,任何变量都是根据引用类型来使用的)。 Kotlin的变量分为 var (可变的) 和 val (不可变的)。...在Kotlin中,更简洁的、更常用的场景是:只要可能,尽量在Kotlin中首选使用val不变值。因为事实上在程序中大部分地方使用不可变的变量,可带来很多益处,如:可预测的行为和线程安全。...(x:Any) = this + x >>> "abc".concat(123) abc123 >>> "abc".concat(true) abctrue 如果 this 没有限定符,它指的是最内层的包含它的作用域...以前,当我们不确定一个DTO类中的字段是否已初始化时,可以使用@Nullable和@NotNull注解来声明,但功能很有限。...操作符 调用的外部 Java 代码有NPE 对于初始化,有一些数据不一致(如一个未初始化的 this 用于构造函数的某个地方) 也可能会发生NPE。 在Kotlin中null等同于空指针。

    1.7K20

    Kotlin入门教程,快使用Kotlin吧

    ,而次构造函数在类体中申明; 主构造函数没有任何修饰符时可以省略constructor关键字,而次构造函数不能省略; 主构造函数不能包含任何的代码,而次构造函数可以; 主构造函数的参数可以在类体中的属性初始化代码和初始化块中使用...: 操作符 该操作符也称之为Elvis操作符,来看一下它的使用方法: 1val length = name?.length ?: -1 如果?...下面列举kotlin中常用的几个函数,用法可以参考:Kotlin中let、also、with、apply函数 1.1、let函数 let扩展函数的实际上是一个作用域函数,当你需要去定义一个变量在一个特定的作用域范围内...let函数是有返回值的,它的返回值为函数块的最后一行或指定return表达式。 使用场景:需要去明确一个变量所处特定的作用域范围内可以使用。...apply和run差不多,不同的是apply函数返回的是他传入的对象 使用场景:apply一般用于一个对象实例初始化的时候,需要对对象中的属性进行赋值。

    1K10

    Vue 匿名、具名和作用域插槽的使用

    Vue 匿名、具名和作用域插槽的使用 ⭐️ 更多前端技术和知识点,搜索订阅号 JS 菌 订阅 Vue 中的插槽在开发组件的过程中其实是非常重要并且好用的。...Vue 的插槽也没有说很难使用,这篇文章简明扼要的介绍了三种插槽的用法。匿名插槽 子组件定义 slot 插槽,但并未具名,因此也可以说是默认插槽。只要在父元素中插入的内容,默认加入到这个插槽中去。... oli 如在父组件中使用这个子组件,并插入 oli 字符串,效果如下: 具名插槽 具名插槽可以出现在不同的地方,不限制出现的次数。...: 作用域插槽 通常情况下普通的插槽是父组件使用插槽过程中传入东西决定了插槽的内容。...但有时我们需要获取到子组件提供的一些数据,那么作用域插槽就排上用场了。

    91410

    Kotlin入门学习,从零基础入门到精通 ,Kotlin超详细教程

    Kotlin语法基础 重点详细内容知识点总结 变量声明:使用var和val关键字声明变量,var表示可变变量,val表示不可变变量(常量)。Kotlin具有类型推导机制,可以自动推断变量的类型。...函数定义与调用:使用fun关键字定义函数,函数可以有参数和返回值。 如何学习该知识 通过编写简单的Kotlin代码,练习变量声明、数据类型使用、控制流语句和函数定义与调用。...、Elvis操作符(?:)等处理null值的机制。 如何学习该知识 通过编写包含null值的Kotlin代码,练习使用安全调用、Elvis操作符等处理null值的机制。...内联函数:Kotlin提供了内联函数(如let、run、with、apply等),用于在作用域内执行代码块。...Kotlin类与对象 重点详细内容知识点总结 类的定义与初始化:使用class关键字定义类,类可以有属性、方法、构造函数等。Kotlin支持主构造函数和次构造函数。

    30610

    第3章 Kotlin 可空类型与类型系统第3章 Kotlin 可空类型与类型系统

    通常,编程语言中的类型系统中定义了 如何将数值和表达式归为不同的类型 如何操作这些类型 这些类型之间如何互相作用 我们在编程语言中使用类型的目的是为了让编译器能够确定类型所关联的对象需要分配多少空间。...类型可以告知程序和程序设计者,应该怎么对待那些比特。 3.1.1 类型系统的作用 使用类型系统,编译器可以检查无意义的、无效的、类型不匹配等错误代码。...这个Array中定义了get, set 算子函数, 同时有一个size 属性代表数组的长度,还有一个返回数组元素的迭代子 Iterator的函数iterator()。...: 使用Elvis操作符来给定一个在是null的情况下的替代值 >>> nullableStr null >>> var s= nullableStr?...如果一个函数的返回值是Nothing,这也就意味着这个函数永远不会有返回值。 但是,我们可以使用Nothing来表达一个从来不存在的返回值。

    2.1K20

    【翻译】Kotlin致简代码之路

    通过介绍这个列子可以显示出 Kotlin 有助于减少语法噪点,并保持函数小且富有表达力。 无有副作用 致简代码告诉我们应该减少副作用。...有副作用的代码容易产生错误,很难以理解,很难做测试,不容易并行化运行(非线程安全),不能被缓存并且不能做到延迟加载。我们可以通过函数式编程的概念来避免副作用的产生。...这基本上就意味着编写纯函数(等于无副作用函数)。...此外, Kotlin 支持默认参数(像这样 val width: Int = 0 这样)。这直接淘汰了那种使用冗长而又繁琐的构造函数链来模拟默认参数的古老方式。...安全访问和 elvis 操作符强强组合是 Kotlin 中一个非常强大的惯用组合方式。它允许达到非常简洁地处理 null 空值目的。

    1.4K30

    Kotlin语法基础之运算符

    赋值运算符(=) 赋值运算a=b,表示等号右边的b初始化或者维护等号左边的a,b可以是变量、常量、字面量或表达式,如: var IntA:Int = 5 val IntB:Int = 10 IntA...使用方式如下: var IntA:Int = 5 val IntB:Int = 10 IntA += IntB // 作用等于 IntA = IntA + IntB IntA -= IntB // 作用等于...Kotlin对三目表达式进行了升级,即elvis表达式的来源,Kotlin中不再支持三目表达式。Elvis操作符的用法如下: = ?...如: // Elvis操作符获取b字符串的长度,如果b为null则返回-1 val lenB = b?.length ?: -1 // 等同于逻辑 val lenA: Int = if (b !...递增和递减 表达式 转换方法 a++ a.inc() a– a.dec() inc() 和 dec() 函数必须返回一个值,它用于赋值给使用 ++ 或 – 操作的变量。

    3K50

    介绍Kotlin第二部分(翻译篇)

    Kotlin系列的编程除了默认的不变性外,还来自于Kotlin stdlib的扩展功能。如果您熟悉函数式编程,那么您将熟悉大部分功能。它们是一组辅助函数和更高级的辅助函数,可以为您的集合提供常用操作。...最后一个向我们展示了几个新的概念,首先是一个本地函数,我们引用了::一个双汇语法,本地函数的样式和作用类似于类或全局作用域函数,但还有一个额外功能,它还能访问与函数本身在同一范围定义的变量。...它们在您的代码中也很明显,并使得高阶函数的使用变得简单。关于Kotlin和lambdas的最好部分是类型推断,当类型不匹配时,它就在你的代码下面出现一条红色的线。...这个问号在Kotlin的null safe起着重要的作用。如果Kotlin编译器在变量声明或函数参数/返回类型中看到这个问号,它将强制您对空检查。...如果我们想从我们的函数返回一些东西,我们可以使用elvis作为默认值,以防我们碰到一个null。使用elvis有点像这样: fun doSomething(laddy: Lad?) = laddy?.

    98940

    Kotlin之Elvis 操作符

    Elvis 操作符的优先级 首先要注意到,Elvis 操作符的优先级是比较低的,特别是比加减乘除的运算符低,混合运算时一定要记得加上括号。...配合使用时的问题 Elvis 操作符与安全调用符 ?. 配合使用时,一定要考虑到安全调用符前后是否为空,否则就会带来流程控制混乱的问题。对于任何一个下列的表达式: val v = a?.b ?...: 与流程控制语句的搭配使用 我发了一个 Kotlin 写的前序遍历二叉树的 Gist,地址在这里:PreOrderTraversing.kt,整个项目:DataStructureLearning-Kotlin...: return list,这句代码的逻辑如下: if(root == null) return list stack.push(root) 此外,Elvis 还可以配合 break 和 continue...改良 Elvis Elvis 操作符很方便,但只能连接表达式,我们可以写一个扩展函数来作为加强版的 Elvis 操作符。 inline infix fun T?.

    56050

    Kotlin之Elvis 操作符

    Elvis 操作符的优先级 首先要注意到,Elvis 操作符的优先级是比较低的,特别是比加减乘除的运算符低,混合运算时一定要记得加上括号。...配合使用时的问题 Elvis 操作符与安全调用符 ?. 配合使用时,一定要考虑到安全调用符前后是否为空,否则就会带来流程控制混乱的问题。对于任何一个下列的表达式: val v = a?.b ?...: 与流程控制语句的搭配使用 我发了一个 Kotlin 写的前序遍历二叉树的 Gist,地址在这里:PreOrderTraversing.kt,整个项目:DataStructureLearning-Kotlin...: return list,这句代码的逻辑如下: if(root == null) return list stack.push(root) 此外,Elvis 还可以配合 break 和 continue...改良 Elvis Elvis 操作符很方便,但只能连接表达式,我们可以写一个扩展函数来作为加强版的 Elvis 操作符。 inline infix fun T?.

    1.3K100

    可变长参数、函数的嵌套、名称空间和作用域学习笔记

    目录 写在博客的开头 可变长参数 形参名 形参 实参 实参 函数对象 一、函数对象的四大功能 引用 当做参数传给一个函数 可以当做函数的返回值 可以当作容器类型的元素 函数的嵌套 函数嵌套的调用 名称空间和作用域...+作用域应用 三、补充知识点 3.1 global关键字(尽量少用,Nick说容易懵逼) 3.2 nonlocal关键字(最好不要使用,容易把自己弄懵逼) 3.3 注意点(very important)...,不过函数内部定义的函数,无法在函数外部使用。...域指的是区域,作用域就是作用的区域。...2.1 全局作用域 全局作用域:全局有效,全局存活,包含内置名称空间和全局名称空间。

    38320
    领券