【Kotlin 初学者】函数(方法)(上)

简介: 目录函数函数头实践函数参数实践Unit函数Nothing类型实践反引号中的函数名使用空格和特殊字符对函数命名实践Kotlin和Java互操作


函数


       函数(function)和方法(method)这两个概念经常被混淆,他们到底有什么关联和区别?其实,它俩没有什么区别只是不同语言叫法不一样,在Java中普遍叫方法。而在Kotlin 中普遍叫函数。重点是:函数(function)和方法(method)是同一个东西,别搞错了。


函数头


微信图片_20220524182608.png


实践


fun main() {
    println(doUserInfo("ShuaiCi", 18))
}
private fun doUserInfo(name:String,age:Int):String{
    return "$name 今年已经$age 了哦"
}


微信图片_20220524182650.png


函数参数


  • 函数的参数默认值
  • 如果不打算传入值参,可以预先给参数指定默认值
  • 具名函数参数
  • 如果使用命名值参,就可以不用管值参的顺序(当参数过多的时候可以使用)

       

实践


fun main() {
    println(doUserInfo("ShuaiCi", 18))
    //如果使用命名值参,就可以不用管值参的顺序
    println(doUserInfo(age = 6, name = "Kotlin"))
    //默认参数,可不传age
    println(doScUserInfo("Android"))
    //可传age
    println(doScUserInfo("Java",30))
}
private fun doUserInfo(name: String, age: Int): String {
    return "$name 今年已经$age 了哦"
}
//默认参数:预先给age指定默认值15
private fun doScUserInfo(name: String, age: Int = 15): String {
    return "$name 今年已经$age 了哦"
}


微信图片_20220524182743.png


Unit函数


       无参数返回>默认返回Unit,可不写

       类似Java语言的void,只不过Unit是个单例类而不是关键字


实践


1.fun main() {
    println(doUnit("ShuaiCi", 18))
    println(doUnit2("ShuaiCi", 18))
}
//无参数返回>默认返回Unit,可不写
//类似Java语言的void,只不过Unit是个单例类而不是关键字
private fun doUnit(name: String, age: Int):Unit {
    println("$name 今年已经 $age 了哦")
}
//不写:Unit 也一样一样的
private fun doUnit2(name: String, age: Int) {
    println("$name 今年已经 $age 了哦")
}


微信图片_20220524182837.png


Nothing类型


       TODO函数的任务就是抛出异常,就是永远别指望它运行成功,返回Nothing类型。终止代码运行,不返回任何类型。你就就可以直接使用TODO()。

注意:不是注释提示,会终止程序的。


实践


fun main() {
    println("-----start-----")
    TODO("终止程序")
    println("-----end-----")
}

微信图片_20220524183708.png


TODO函数


@kotlin.internal.InlineOnly
public inline fun TODO(reason: String): Nothing = throw NotImplementedError("An operation is not implemented: $reason")


反引号中的函数名


  • Kotlin可以使用空格和特殊字符对函数命名,不过函数名要用一对反引号括起来。(测试时可用)


  • 为了支持Kotlin和Java互操作,而Kotlin和Java各自却有着不同的保留关键字,不能作为函数名,使用反引号括住函数名就能避免任何冲突。


使用空格和特殊字符对函数命名


实践


fun main() {
    `20211202 世界对称日`("公众号:帅次")
}
private fun `20211202 世界对称日`(name :String ){
    println(name)
}


微信图片_20220524183912.png


 这个提示是:Android项目中不允许使用标识符。不影响运行。


Kotlin和Java互操作


Java代码


public class Test {
    public static final void fun(){
        System.out.println("来自Java的亲切问候");
    }
}


Kotlin


fun main() {
    //使用空格和特殊字符对函数命名
    `20211202 世界对称日`("公众号:帅次")
    //Kotlin和Java互操作
    Test.`fun`()
}


微信图片_20220524184020.png


报错情况


微信图片_20220524184040.png


相关文章
|
4天前
|
安全 Kotlin
Kotlin - 作用域函数
Kotlin - 作用域函数
|
8天前
|
Kotlin
Kotlin - 高阶函数与函数引用
Kotlin - 高阶函数与函数引用
19 3
Kotlin - 高阶函数与函数引用
|
2天前
|
IDE 开发工具 Kotlin
Kotlin - 函数与Lambda表达式
Kotlin - 函数与Lambda表达式
|
5天前
|
Kotlin
Kotlin教程笔记(21) -高阶函数与函数引用
Kotlin教程笔记(21) -高阶函数与函数引用
|
5天前
|
安全 Kotlin
Kotlin教程笔记(23) -作用域函数
Kotlin教程笔记(23) -作用域函数
|
8天前
|
安全 Kotlin
Kotlin - 作用域函数
Kotlin - 作用域函数
20 3
|
1天前
|
安全 Kotlin
Kotlin - 作用域函数
Kotlin - 作用域函数
8 0
|
30天前
|
JSON 调度 数据库
Android面试之5个Kotlin深度面试题:协程、密封类和高阶函数
本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点。文章详细解析了Kotlin中的协程、扩展函数、高阶函数、密封类及`inline`和`reified`关键字在Android开发中的应用,帮助读者更好地理解和使用这些特性。
19 1
|
2月前
|
Android开发 开发者 Kotlin
告别AsyncTask:一招教你用Kotlin协程重构Android应用,流畅度飙升的秘密武器
【9月更文挑战第13天】随着Android应用复杂度的增加,有效管理异步任务成为关键。Kotlin协程提供了一种优雅的并发操作处理方式,使异步编程更简单直观。本文通过具体示例介绍如何使用Kotlin协程优化Android应用性能,包括网络数据加载和UI更新。首先需在`build.gradle`中添加coroutines依赖。接着,通过定义挂起函数执行网络请求,并在`ViewModel`中使用`viewModelScope`启动协程,结合`Dispatchers.Main`更新UI,避免内存泄漏。使用协程不仅简化代码,还提升了程序健壮性。
75 1
|
3月前
|
调度 Android开发 开发者
【颠覆传统!】Kotlin协程魔法:解锁Android应用极速体验,带你领略多线程优化的无限魅力!
【8月更文挑战第12天】多线程对现代Android应用至关重要,能显著提升性能与体验。本文探讨Kotlin中的高效多线程实践。首先,理解主线程(UI线程)的角色,避免阻塞它。Kotlin协程作为轻量级线程,简化异步编程。示例展示了如何使用`kotlinx.coroutines`库创建协程,执行后台任务而不影响UI。此外,通过协程与Retrofit结合,实现了网络数据的异步加载,并安全地更新UI。协程不仅提高代码可读性,还能确保程序高效运行,不阻塞主线程,是构建高性能Android应用的关键。
59 4