文章目录
基本语法
1.1 函数头学习
fun main() {
method01("Tom",20)
}
//函数默认都是public
//其实kotlin的函数更规范,先有输入,再有输出
private fun method01(name: String, age:Int):Int{
println("我的名字是${name},今年年龄是:$age")
return 200
}
//上面的kt函数,背后会转换成下面的java代码
//public static final int method01(String name,Int age){
// String var2="我的名字是"+name+",今年年龄是"+age;
// System.out.println(var2)
// return 200
//}
1.2 具名函数参数
kotlin可以不用像java一样,固定参数顺序,可以根据自己需求直接指定具体数据:
fun main() {
loginAction(userage = 20, username = "测试", userphone = "1251315131", password = "1111")
}
fun loginAction(username :String, password:String,userage:Int,userphone:String){
println("username:$username, password:$password ,userage:$userage ,userphone:$userphone");
}
1.3 反引号中函数名特点
1.函数名可以写中文
2.避开kotlin里面的关键字
fun main() {
//第一种情况
`登录功能测试`("test","11111")
//第二种情况 //in is在kt里面是关键字,怎么办?使用反引号
KtBase19.`in`()
KtBase19.`is`()
}
private fun `登录功能测试`(name :String,pwd :String){
println("用户名是:$name,密码是:$pwd")
}
public class KtBase19 {
public static final void in(){
System.out.println("in run success");
}
public static final void is(){
System.out.println("in run success");
}
}
1.4 隐式返回
1.4.1分开写函数(无参)
没有return语句
fun main() {
//等同于fun methodAction():String
//第一步:函数输入输出的声明
// 函数名 输入 输出
val methodAction :()->String
//第二步:对上面函数的实现
methodAction={
val valuenumber =9999
"$valuenumber test"
}
//第三步:调用此函数
println(methodAction())
}
//
//fun methodAction() :String{
// return "test"
//}
1.4.2合并写函数(有参数)
fun main() {
//第一步:函数输入输出的声明 第二步:对上面函数的实现
val methodAction:(Int,Int,Int)->String={ number1,number2,number3->
val numberValue=9999
"$numberValue test 参数一:$number1,参数二:$number2,参数三:$number3"
}
//第三步:调用此函数
println(methodAction(1,2,3))
}
//private fun methodAction(number1:Int,number2:Int,number3: Int):String{
// val numberValue=9999
// return "$numberValue test 参数一:$number1,参数二:$number2,参数三:$number3"
//}
1.5 it关键字
函数参数只有一个值时 自动帮你写了一个it
fun main() {
val methodAction:(String)->String={ "$it" }
val methodAction2:(Double)->String={ "$it"}
println(methodAction("ddd3d"))
println(methodAction2(4505.21))
}
//fun methodAction(it :String) :String{
// return "$it"
//}
1.6 函数内联
参数中有函数类型,使用内联
编译期间会优化,直接替换为代码,如果不加内联,反编译的Java中有一大堆对象去完成这个方法
public inline fun login(name: String, pwd: String, response: (String, Int) -> Unit) {
// 无聊的前端校验
// 校验完成后请求服务端
if (controller(name, pwd)) {
response("success", 200)
} else {
response("失败", 404)
}
}
小结:如果函数参数有lambda,尽量使用inline
注:内联的方法不能调私有方法,除非内联方法也是私有的
1.7 匿名函数的类型推断
fun main() {
// 方法名 : 必须指定 参数类型 和返回类型
// 方法名 = 类型推断返回类型
val method1={ v1:Double,v2:Float,v3:Int ->
"v1: $v1,v2: $v2,v3: $v3"
}
val method2: (Double,Float,Int)->String={ v1,v2,v3->
"v1: $v1,v2: $v2,v3: $v3"
}
println(method1(1.1,0.2f,3))
println(method2(1.1,0.2f,3))
}
文章评论