Kotlin的作用域函数 (kotlin和java的区别)
Kotlin作用域函数
Kotlin提供了几个作用域函数,用于在特定的作用域外口头代码块。这些作用域函数包含:
这些作用域函数可以依据不同的经常使用场景来选用,可以简化代码,并提供更明晰的高低文。
作用域函数可以在一个对象上口头一系列操作,并前往一个结果。它的语法如下:
object.let{//在这里可以对object启动操作//前往结果}
经常使用函数可以繁难地对一个对象启动操作,例如:
valname:String?="John"name?.let{//当name不为null时口头以下操作println("Nameis$it")}
在下面的例子中,假设不为null,则会打印出
NameisJohn
。函数将作为参数传递给lambda表白式,并在lambda表白式中经常使用来援用该参数。
函数还可以用于链式调用,例如:
valresult="Hello,World!".let{//对字符串启动操作it.toUpperCase()}.let{//继续对字符串启动操作it.substring(0,5)}println(result)//输入"HELLO"
在下面的例子中,函数将字符串转换为大写,并截取前5个字符,最终结果为。
函数是Kotlin中十分有用的一个作用域函数,可以简化代码并提高可读性。
作用域函数是一个高阶函数,它可以在指定的高低文中口头代码块,并前往最后一个表白式的结果。函数的语法如下:
run(block:T.()->R):Robj.run{//在这里可以经常使用this关键字援用obj对象}
其中是要口头的代码块,是高低文对象的类型,是代码块的前往类型。
经常使用函数可以繁难地在一个对象的高低文中口头多个操作,而不须要重复援用对象的称号。例如:
valperson=Person("Alice",25)valresult=person.run{println("Name:$name")println("Age:$age")age+1}println("Result:$result")
在下面的例子中,咱们创立了一个对象,并经常使用函数在该对象的高低文中口头了两个操作:打印出姓名和年龄,并前往年龄加1的结果。最后,咱们打印出了却果。
请留意,函数的前往值是代码块的最后一个表白式的结果。在下面的例子中,函数前往了的结果。
作用域函数准许你在一个特定的高低文中口头一系列操作,而无需重复援用该高低文对象。
函数的语法如下:
with(obj){//在这里可以经常使用obj的成员函数和属性//启动一系列操作}
在函数的代码块中,你可以间接经常使用的成员函数和属性,而无需重复经常使用对象名来援用它们。这样可以使代码愈加繁复和易读。
示例代码:
dataclassPerson(valname:String,varage:Int)funmn(){valperson=Person("Alice",25)with(person){println("姓名:$name")println("年龄:$age")age+=1}println("年龄参与后的值:${person.age}")}
输入结果为:
姓名:Alice年龄:25年龄参与后的值:26
在下面的示例中,咱们经常使用函数来操作对象。在函数的代码块中,咱们可以间接经常使用和属性,而无需重复经常使用对象名来援用它们。同时,咱们还可以修正属性的值,这样会间接影响到对象。
作用域函数准许你在一个对象上口头一系列操作,并前往该对象自身。它的语法如下:
object.apply{//在这里口头一系列操作}
经常使用函数可以繁难地对一个对象启动初始化或许性能。在的代码块中,你可以调用对象的方法、设置属性等。最后,函数会前往该对象自身,这样你可以继续对该对象启动其余操作。
示例代码:
valperson=Person().apply{name="Alice"age=25setAddress("123MainSt")}
在下面的示例中,咱们创立了一个对象,并经常使用函数对其启动了初始化。在的代码块中,咱们设置了和属性,并调用了
setAddress
方法。最后,函数前往了该对象自身,咱们可以继续对其启动其余操作。
经常使用函数可以简化代码,特意是在须要对一个对象启动多个操作时。可以提高代码的可读性和可保养性。
作用域函数准许你在对象上口头一些操作,并前往对象自身。它的语法如下:
inlinefun<T>T.also(block:(T)->Unit):Tobj.also{//在这里可以经常使用it来援用obj对象}
经常使用函数,你可以在对象上口头一些操作,例如打印日志、修正属性等。这个函数会前往对象自身,因此你可以在链式调用中经常使用它。
示例代码:
vallist=mutableListOf(1,2,3)list.also{println("原始列表:$it")it.add(4)it.remove(2)}.also{println("修正后的列表:$it")}
输入结果为:
原始列表:[1,2,3]修正后的列表:[1,3,4]
在下面的示例中,咱们经常使用函数在对象上口头了两个操作:参与元素4和移除元素2。同时,咱们还在每个操作之前打印了关系的日志。最后,咱们打印了修正后的列表。
函数是一个十分有用的作用域函数,它可以让你在对象上口头一些操作,并前往对象自身。这在链式调用和调试环节中十分有用。
经常使用及实用场景
作用域函数可以在特定的高低文中口头代码块,并且可以繁难地访问高低文对象。
valresult=someObject?.let{//对非空对象启动操作//前往操作结果}
valresult=someObject.run{//在高低文对象上口头操作//前往操作结果}
valresult=with(someObject){//在高低文对象上口头操作//前往操作结果}
valsomeObject=SomeObject().apply{//对对象启动初始化操作}
valsomeObject=SomeObject().also{//对对象启动初始化操作}
作用域函数可以提高代码的可读性和繁复性,实用于各种场景,如链式调用、对象初始化等。依据详细的需求和编码格调,选用适合的作用域函数可以使代码愈加明晰和易于保养。
每天学一点 Kotlin -- 函数:泛型函数
----《第一季Kotlin崛起:次世代Android开发 》学习笔记 总目录: 每天学一点 Kotlin ---- 目录 上一篇: 每天学一点 Kotlin -- 函数:标准库函数 下一篇: 每天学一点 Kotlin -- 函数:类型层级 1.1 泛型是指“通用的类型”,在面向对象中会经常用到。 比如写了一个函数,然后换一下参数类型和返回值类型又要写一次函数体不变的函数。 这时候泛型就派上用场了。 使用泛型就可以让函数接受任何类型的参数。 1.2 要使用泛型,就要在关键字 fun 后面加上泛型占位符,在参数中使用这个占位符。 举个栗子: 1.3 举个栗子2:
#5 kotlin nullable 可空类型
kotlin nullable类型和typescript,swift中的可选类型是类似的,使用方式略有一些不同。
这个和swift中的 隐式解包类型一样,需要注意的是,要确保可选类型的值不为空,否则解包抛错
但是 a 如果后面设置为 null , 则会抛出错误, 因此一般不使用这种方式解包
Swift 中的用法
对于上面的可选类型的使用,为了避免取到空值,一般需要进行验空判断
这样写显得很啰嗦,kotlin提供了一个 let 作用域函数
另外这个作用域函数提供了一个默认值 it
kotlin中的这个 let 作用域函数,给我的感觉有点类似swift中的 guard
另外kotlin中的let还可以配合 前面碰到的 ?: 提供默认值
另外值得注意的是,kotlin中可以使用 val 声明nullable类型,和 var 不同的是,使用 val 声明之后,可选类型不能重新赋值,使用 var 声明也需要初始化(这一点和swift中不一样)
知识点:
2019年07月24日00:13:54
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。