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

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 “ n a m e  今年已经 name 今年已经 name 今年已经age 了哦”

}

//默认参数:预先给age指定默认值15

private fun doScUserInfo(name: String, age: Int = 15): String {

return “ n a m e  今年已经 name 今年已经 name 今年已经age 了哦”

}

Unit函数


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

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

实践

fun main() {

println(doUnit(“ShuaiCi”, 18))

println(doUnit2(“ShuaiCi”, 18))

}

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

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

private fun doUnit(name: String, age: Int):Unit {

println(“ n a m e  今年已经  name 今年已经  name 今年已经 age 了哦”)

}

//不写:Unit 也一样一样的

private fun doUnit2(name: String, age: Int) {

println(“ n a m e  今年已经  name 今年已经  name 今年已经 age 了哦”)

}

Nothing类型


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

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

实践

fun main() {

println(“-----start-----”)

TODO(“终止程序”)

println(“-----end-----”)

}

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)

}

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

Kotlin和Java互操作


Java代码

public class Test {

public static final void fun(){

System.out.println(“来自Java的亲切问候”);

}

}

Kotlin

fun main() {

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

20211202 世界对称日(“公众号:帅次”)

//Kotlin和Java互操作

Test.fun()

}

报错情况

拓展

==

匿名函数


定义时不取名字的函数,我们称之为匿名函数,匿名函数通常整体传递给其他函数,或者从其他函数返回。有了它,我们能够根据需要制定特殊规则,轻松定制标准库里的内置函数

{} 就代表匿名函数。

it关键字


只有一个参数的匿名函数时,可以使用it关键字来表示参数名。当你需要传入两个值参,it关键字就不能用了。这里简单的了解一下,在后面的实践中使用。

函数类型和隐式返回


函数的类型,由传入的参数和返回值类型决定

隐式返回:除了极少数情况外,匿名函数不需要return关键字来返回数据,匿名函数会隐式或自动返回函数体最后一行语句的结果

实践

fun main() {

//1、声明函数的输入() 输出String

val scFun 😦) -> String

//2、实现函数

scFun = {

val name = “帅次”

// 匿名函数不需要写retrun,最后一行就是返回值

“$name 就是个战五渣”

}

//此处别忘记加(),这里是函数而不是属性

println(scFun())

}

然后你会发现在第一步下面有虚线,咱们操作一下。

代码如下,更加简洁了

fun main() {

//1、声明函数的输入() 输出String

//2、实现函数

val scFun 😦) -> String = {

val name = “帅次”

// 匿名函数不需要写retrun,最后一行就是返回值

“$name 就是个战五渣”

}

println(scFun())

}

匿名函数参数


匿名函数可以不带参数,也可以带一个或多个任何类型的参数。

需要带参数时参数的类型放在匿名函数的类型定义中参数名放在函数定义中

实践

fun main() {

//带参数

val scFun2: (Int) -> String = { age ->

val name = “帅次”

// 匿名函数不需要写retrun,最后一行就是返回值

n a m e  就是个战 name 就是个战 name 就是个战age 渣”

}

println(scFun2(16))

}

这里是一个参数咱们尝试使用一下it关键字

it关键字实践

1 处,还有警告:这里的it代表传入的Int。

当这里的传入参数变成多个时,it就无法使用了。

类型推断


定义一个变量时,如果已把匿名函数作为变量赋值给它,就不需要显示指明变量类型。

无参类型推断

实践

//无参类型推断

val scFun4 = {

val name = “帅次”

// 匿名函数不需要写retrun,最后一行就是返回值

“$name 无参类型推断”

}

println(scFun4())

带参类型推断

实践

//带参类型推断

val scFun5 = { age:Int,money:Float->

val name = “帅次”

// 匿名函数不需要写retrun,最后一行就是返回值

n a m e  带参类型推断  name 带参类型推断  name 带参类型推断 age 岁啦,兜里$money”

}

println(scFun5(15,1.25f))

定义一个函数:参数是函数


一个函数,作为另一个函数的参数。

实践

fun main() {

//2、声明函数

val bookBeginner = {bookName:String,price:Double->

b o o k N a m e  定价为: bookName 定价为: bookName 定价为:price”

}

//3、调用函数,传入函数bookBeginner

learningAndroidBook(“帅次”,bookBeginner)

}

//1、定义一个函数(learningAndroidBook):参数是函数(bookPrice)

fun learningAndroidBook(name:String,bookPrice:(String,price:Double)->String){

println("$name 来自 learningAndroidBook ")

println(bookPrice(name,48.88))

}

简略写法

一个函数的lambda参数排在最后,或者是唯一的参数,那么括住lambda值参的一对圆括号可以省略

fun main() {

//4、简略写法(参数排在最后)

learningAndroidBook(“Kotlin 简略写法”){bookName:String,price:Double->

b o o k N a m e  定价为: bookName 定价为: bookName 定价为:price”

最后

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

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助

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

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助

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

[外链图片转存中…(img-Iixiqlsv-1715799886585)]

[外链图片转存中…(img-Ad822bP7-1715799886586)]

[外链图片转存中…(img-J0Xbtp6a-1715799886588)]

[外链图片转存中…(img-a50UhFru-1715799886589)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值