【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


相关文章
|
17天前
|
安全 Kotlin
Kotlin教程笔记(23) -作用域函数
Kotlin教程笔记(23) -作用域函数
44 6
|
17天前
|
Kotlin
Kotlin教程笔记(21) -高阶函数与函数引用
Kotlin教程笔记(21) -高阶函数与函数引用
29 6
|
1月前
|
IDE 开发工具 Kotlin
Kotlin - 函数与Lambda表达式
Kotlin - 函数与Lambda表达式
41 13
|
21天前
|
IDE 开发工具 Kotlin
Kotlin教程笔记(6) - 函数与Lambda表达式
Kotlin教程笔记(6) - 函数与Lambda表达式
46 1
|
1月前
|
IDE 开发工具 Kotlin
Kotlin - 函数与Lambda表达式
Kotlin - 函数与Lambda表达式
24 1
|
1月前
|
IDE 开发工具 Kotlin
Kotlin - 函数与Lambda表达式
Kotlin - 函数与Lambda表达式
|
1月前
|
安全 Kotlin
Kotlin - 作用域函数
Kotlin - 作用域函数
24 0
|
Kotlin
【Kotlin】Kotlin 构造函数 ( 主构造函数 | 主构造函数声明属性 | init 初始化代码块 | 次构造函数 | 构造函数委托 | 调用构造函数创建实例对象 )(二)
【Kotlin】Kotlin 构造函数 ( 主构造函数 | 主构造函数声明属性 | init 初始化代码块 | 次构造函数 | 构造函数委托 | 调用构造函数创建实例对象 )(二)
127 0
|
Kotlin
【Kotlin】Kotlin 构造函数 ( 主构造函数 | 主构造函数声明属性 | init 初始化代码块 | 次构造函数 | 构造函数委托 | 调用构造函数创建实例对象 )(一)
【Kotlin】Kotlin 构造函数 ( 主构造函数 | 主构造函数声明属性 | init 初始化代码块 | 次构造函数 | 构造函数委托 | 调用构造函数创建实例对象 )(一)
288 0
|
2月前
|
JSON 调度 数据库
Android面试之5个Kotlin深度面试题:协程、密封类和高阶函数
本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点。文章详细解析了Kotlin中的协程、扩展函数、高阶函数、密封类及`inline`和`reified`关键字在Android开发中的应用,帮助读者更好地理解和使用这些特性。
34 1