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开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!