网站首页 > 博客文章 正文
1. 扩展函数:
Kotlin的扩展函数允许在不直接修改现有类代码的情况下增加新的函数。这在你无法修改类或希望代码干净有序的情况下非常实用。
// 扩展函数示例 1
fun View.gone(){
visibility =View.GONE
}
fun View.visible(){
visibility =View.VISIBLE
}
// 使用
textView.hide()
// 扩展函数示例 2
// 该扩展函数将字符串的首字母大写
fun String.capitalizeFirstLetter(): String {
if (isEmpty()) return this
return substring(0, 1).toUpperCase() + substring(1)
}
// 使用
fun main() {
val input = "this is kotlin"
val outputString = input.capitalizeFirstLetter()
println(outputString)
}
// 输出: This is kotlin
2. 使用 let, run, apply, 和 also 扩展功能: Kotlin作用域函数
选择合适的作用域函数,请参考以下表格
函数上下文返回值let:"this"lambda函数的结果apply:"this"当前上下文对象with:"this"lambda函数的结果run:"this"lambda函数的结果also:"it"当前上下文对象
详情参考《Kotlin技巧:作用域函数let、run、with、apply和also》
3. 高阶函数
在Kotlin中,可以接受函数作为参数的函数或者可以返回函数的函数被称为高阶函数。
fun add(a: Int, b: Int): Int{
var sum = a + b
return sum
}
// higher-order function definition
fun higherfunc(addfunc:(Int,Int)-> Int){
// invoke regular function using local name
var result = addfunc(3,6)
print("The sum of two numbers is: $result")
}
fun main(args: Array<String>) {
// invoke higher-order function
higherfunc(::add)
}
// output::The sum of two numbers is: 9
4. 使用when表达式
- 在Kotlin中,when的工作方式和其他语言中的switch很相似,但是它更加智能和灵活。
- 使用 Kotlin 的一件很酷的事情是,不需要像其他语言(如 Java)那样添加中断break。一旦找到匹配项,它就会运行该代码并从 when 块继续。
- 替换冗长的“if-else-if”链,以获得更清晰的条件逻辑。
示例 1:范围
val age = 20
when (age) {
in 18..25 -> println("Young adult")
in 26..60 -> println("Adult")
else -> println("Not considered an adult")
}
示例 2:使用 when 作为表达式
fun main() {
var weekDay = 3
var day= when(weekDay) {
1->"Monday"
2->"Tuesday"
3->"Wednesday"
4->"Thursday"
5->"Friday"
6->"Saturday"
7->"Sunday"
else-> "Not a week day"
}
print(day)
}
- 优点:
- 增强代码的可读性和可维护性。
- 避免嵌套 if 语句以获得更清晰的逻辑。
5. Null安全和安全转换操作符
- 空安全
- Kotlin 的 null 安全性由编译器强制执行,旨在通过消除代码中存在风险的 null 引用来防止 NullPointerExceptions。
var a: String = "kotlin" // Regular initialization means non-nullable by default
a = null // compilation error
要允许空值,可以通过编写 String? 将变量声明为可为空字符串:
var b: String? = "kotlin" // can be set to null
b = null
print(b)
- 安全调用 Kotlin 安全调用运算符?允许访问字段或调用可为空变量的方法。特别是,仅当变量的引用不为空时,该运算符才对变量执行操作。否则,返回 null。例如:
fun main() {
val a: String? = "kotlin"
// it returns a's length, or null if a in null
println(a?.length)
// it returns a's value in uppercase, or null if a in null
println(a?.uppercase())
}
安全转换
如果对象不是目标类型,则常规强制转换可能会导致 ClassCastException。另一种选择是使用安全强制转换,如果尝试不成功,则返回 null。
val obj: Any = "Kotlin"
val str: String? = obj as? String
猜你喜欢
- 2024-09-10 全新版Jetpack进阶提升,系统性落地短视频App(完结)
- 2024-09-10 Android开发新选择:Kotlin(kotlin android开发教程)
- 2024-09-10 高兼容低成本,开箱即用的首页性能优化方式被我们找到了
- 2024-09-10 使用Kotlin实战一个BaseActivity并制作一个登录页
- 2024-09-10 Kotlin 1.2 Beta 发布,来看看新特性!
- 2024-09-10 Android自定义控件(高手级)——JOJO同款能力分析图
- 2024-09-10 Spring Boot 自定义Jackson ObjectMapper
- 2024-09-10 android studion 使用kotlin操作ListView代码量的减少
- 2024-09-10 使用Kotlin实战一个Android架构中的MVP模式,简单实用
- 2024-09-10 使用kotlin实现沉浸式状态栏(kotlin ui框架)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)