TestClass().randomOrDefault {

println(“由于随机产生的对象 和我们指定的不一样,启用备用对象”)

ObjectClass1(“备用的对象,大王五”, 99)

}

data class ObjectClass1(val name: String, val age: Int)

data class ObjectClass2(val name: String, val age: Int)

data class ObjectClass3(val name: String, val age: Int)

class TestClass {

// 所有的功能,都写在函数上

// 默认随机输出一个对象,如果此对象和指定的对象不一致,就启用备用对象,否则直接返回对象

inline fun randomOrDefault(defaultLambdaAction:() ->T) : T? {

val objList = listOf(

ObjectClass1(“obj1 tiger”, 18), ObjectClass2(“obj2 张三”, 38), ObjectClass3(“obj3 王美丽”, 28)

)

// 随机选择最后一个对象

val randomObj = objList.shuffled().last()

println(“随机产生的对象是:$randomObj”)

// 如果 it 生成的对象等于T的类型,就会走as T 直接返回了

return randomObj.takeIf { it is T } as T? // null as T null as T?

// 如果 it 随机产生的对象 不等于 T类型,就直接走下面的备用还节

?: defaultLambdaAction()

}

}

2、定义扩展函数

在kotlin 中,可扩展的函数有很多,下面举几个例子:

ObjectClass1(“张三”, 22).show()

ObjectClass1(“tiger”, 22).getInfo()

println(“tiger”.addExtAction(3))

// 增加扩展函数show()

fun ObjectClass1.show(){

println(“我是新增的show函数:name:

n

a

m

e

,

a

g

e

name, age:

name,age:age”)

}

// 增加扩展函数getInfo()

fun ObjectClass1.getInfo(){

println(“我是新增的getInfo函数:name:

n

a

m

e

,

a

g

e

name, age:

name,age:age”)

}

// 字符串 扩展

fun String.addExtAction(number: Int) = this + “@”.repeat(number)

data class ObjectClass1(val name: String, val age: Int)

3、可空类型函数扩展

“tiger”.outPutStringValue(“传null 就走这里”)

null.outPutStringValue(“传null 就走这里”)

// String 不可空的情况下,只能传值,在可空的情况下,可以传 null

// defaultValue 添加一个备用函数,在传值为 null 的情况下,返回 defaultValue 备用内容

fun String?.outPutStringValue(defaultValue: String){

println(this ?: defaultValue)

}

4、infix 关键字

infix 中缀表达式,可以简化代码。需要加 扩展函数才能使用哦

// 条件一:对第一个参数 O1.test() 函数扩展

// 条件二:需要在 括号(o2: o2)参数里面,传递一个参数

“tiger”.test(“18”)

“tiger” test (“18”)

123 test (“18”)

// map 自带的有中缀表达式哦

val mapOf = mapOf(“tiger” to 2)

println(mapOf)

infix fun O1.test(o2: O2) {

println(“中缀表达式第一个参数的内容是:$this”)

println(“中缀表达式第二个参数的内容是:$o2”)

}

5、变换函数 Map

// 原理:就是把 匿名函数 最后一行的返回值,加入到一个新的集合,新集合的泛型是R,并且返回集合

val listOf = listOf(“张三”, “王美丽”, “大漂亮”)

val map = listOf.map {

“[$it]”

}.map {

“你给啥,我都敢加 $it”

}

println(map)

6、变换函数 flatMap

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)

最后

上面这些公司都是时下最受欢迎的互联网大厂,他们的职级、薪资、福利也都讲的差不多了,相信大家都是有梦想和野心的人,心里多少应该都有些想法。

也相信很多人也都在为即将到来的金九银十做准备,也有不少人的目标都是这些公司。

我这边有不少朋友都在这些厂工作,其中也有很多人担任过面试官,上面的资料也差不多都是从朋友那边打探来的。除了上面的信息,我这边还有这些大厂近年来的面试真题及解析,以及一些朋友出于兴趣和热爱一起整理的Android时下热门知识点的学习资料。

部分文件:

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长! * [外链图片转存中…(img-UJG05AJC-1712767127911)] [外链图片转存中…(img-Uj52JVqU-1712767127912)] [外链图片转存中…(img-SBjN0ErP-1712767127912)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长! [外链图片转存中…(img-zVOHtqgN-1712767127912)]

推荐链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。
大家都在看: