Kotlin支持lambda表达式。并非每个函数都需要一个名称。某些函数通过输入和输出更直接地进行标识。这些函数称为“匿名函数”。

lambda表达式的写法为:(type1,type*) -> type_return = { }

使用实例:

fun main(args: Array) {

val sumLambda: (Int, Int) -> Int = {x,y -> x+y} //(Int, Int) -> Int = {x,y -> x+y}就是一个匿名函数

println(sumLambda(1,2)) // 输出 3

}

字符串模板

字符串可以包含模板表达式,即可求值的代码片段,并将它的结果连接到字符串里面。

字符串模板表达式可以是 $变量名 ${变量名}

实例:

val a = 10

val s1 = “a = $a” // 结果为 “a = 10”

val s = “abc”

val str = “$s.length is ${s.length}” // 结果为 “abc.length is 3”

a = 2

// 模板中的任意表达式:

val s2 = “${s1.replace(“is”, “was”)}, but now is $a”

//结果为“a was 10 , but now is 2 ”

var name = “张三”

var sex = true

var date = “2021年1月2日”

var time = “11点59分”

var work =“该睡觉了”

val orderInfo = “你好,${name}

i

f

(

s

e

x

)

"

c

o

o

l

b

o

y

"

e

l

s

e

"

c

o

o

l

g

i

r

l

"

,

"

+

"

现在已经是

{if(sex)"cool boy" else "cool girl" },"+"现在已经是

if(sex)"coolboy"else"coolgirl","+"现在已经是{date}\t

t

i

m

e

,

"

+

"

{time}了,"+"你

time了,"+"你{cacke}”

//结果为"你好,张三 cool boy,现在已经是2021年1月2日 11点59分了,你该睡觉了"

注释

Kotlin 支持单行(或行末)与多行(块)注释。

// 这是一个行注释

/* 这是一个多行的

块注释。 */

Kotlin 中的块注释可以嵌套

/* 注释从这里开始

/* 这是嵌套的注释 */

并且在这里结束。 */

Null 安全

在某些语言中,可以声明引用类型变量而不明确提供初始值。在这类情况下,变量通常包含 null 值。默认情况下,Kotlin 变量不能持有 null 值。这意味着以下代码段无效:

// 赋值失败

val languageName: String = null

要使变量持有 null 值,它必须是可为 null 类型。可以在变量类型后面加上 ? 后缀,将变量指定为可为 null,如以下示例所示:

val languageName: String? = null

当使用可以可返回Null的函数时,要注意Null安全,应该先做判断处理

fun printProduct(arg1: String, arg2: String) {

val x = parseInt(arg1)

val y = parseInt(arg2)

// 直接使用 “x * y” 会导致编译错误,因为它们可能为 null

if (x != null && y != null) {

// 在Null检测之后,x 与 y 会自动转换为非空值(non-nullable)

println(x * y)

}

else {

println(“‘

a

r

g

1

o

r

arg1' or '

arg1′or′arg2’ is not a number”)

}

}

类型检测和自动类型转换

我们可以使用 is运算符检测一个表达式是否某类型的一个实例(类似于Java中的instanceof关键字)。 如果一个不可变的局部变量或属性已经判断出为某类型,那么检测后的分支中可以直接当作该类型使用,无需显式转换

示例:

//写法一

fun getStringLength(parm: Any): Int? {

if (parm is String) {

// 做过类型判断以后,"parm"会被系统自动转换为String类型

return parm.length

}

// 这里的parm仍然是Any类型的引用

return 0

}

//写法二

fun getStringLength(parm: Any): Int? {

if (parm !is String) return 0

// “parm” 在这一分支自动转换为 “String”

return parm.length

}

//写法三

fun getStringLength(parm: Any): Int? {

//用到了&&运算符的短路特性

// 在 “&&” 运算符的右侧, “parm” 的类型将会被自动转换为 “String”

if (parm is String && obj.length > 0)

return parm.length

return 0

}

简化Toast的用法

Toast的标准用法为:

Toast.makeText(content, “this is content by showed”, Toast.LENGTH_SHORT).show()

如果你需要多次调用Toast方法,就会感觉这是一段很长,且内容都是重复的代码,且容易忘记调用最后的show()方法,不仅Toast没法弹出来,还容易产生一些奇怪的bug。

一般而已,我们调用Toast时,想要显示的都是String或者Int类型的数据,我们只需要在Kotlin中的String和Int类中各添加一个扩展函数,然后在里面封装弹出toast的具体逻辑就好了。这样,想要弹出Toast提示的时候,只要调用它们的扩展函数就可以了。

我们只需要新建一个kt文件,然后写如下代码就可以了:

fun String.showToast(context:Context, showTime: Int = Toast.LENGTH_SHORT){

Toast.makeText(context, this, showTime).show()

}

fun Int.showToast(context:Context, showTime: Int = Toast.LENGTH_SHORT){

Toast.makeText(context, this, showTime).show()

}

有了这个扩展代码后,我们再需要使用Toast时,只需要这么写就可以了:

“This is want to show”.showToast(context)

在上述函数中, showTime是有默认值的参数,我们也可以重新设置Toast的显示时间:

“This is want to show more long”.showToast(context, Toast.LENGTH_LONG) 作者 游鹏 原文地址

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

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

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

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

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

如果你觉得这些内容对你有帮助,可以扫码获取!!(资料价值较高,非无偿)

自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!

目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**

如果你觉得这些内容对你有帮助,可以扫码获取!!(资料价值较高,非无偿)

自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…

[外链图片转存中…(img-Q166vjkk-1711540311187)]

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!

好文推荐

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: