零、前言
玩java也有一段时间了,个人还是非常喜欢java的。 对Kotion也有层有耳闻,以前也接触过写语法,写起来感觉有点像js,和python,又有种食之无味,弃之可惜的感觉,最后还是搁下了。 久了不用也忘得差不多了,现在重拾一下,写些笔记记录一下。
函数作为编程语言中的可复用单元,对编程的简化起到至关重要的作用。 kotlin作为函数是一等公民的一种编程语言,函数似乎成了最闪耀的明星。
一、语法的定义
1.kotlin语法之----函数定义(万变不离其宗)
fun 函数名(变量1:变量类型|n+):返回值类型{
函数体
return
}
/**
* 计算矩形面积
*/
fun area(x: Double, y: Double): Double {
println("x=${x} y=${y}")
return x * y
}
2.函数调用的四种方式
area(y = 5.0, x = 3.0) //x=3.0 y=5.0
area(x = 5.0, y = 3.0) //x=5.0 y=3.0
area(5.0, y = 3.0) //x=5.0 y=3.0
area(5.0, 3.0) //x=5.0 y=3.0
3.函数默认参数
fun area(x: Double, y: Double = 1.0): Double {
println("x=${x} y=${y}")
return x * y
}
area(3.0) //x=3.0 y=1.0
4.单表达式函数:相当于对上面的简写形式
/**
* 单表达式函数
*/
fun area(x: Double, y: Double) = x * y
5.变参测试---vararg
/**
* 变参测试
*/
fun printAll(vararg names: String) {
for (i in names.indices) {
print("${i }"+" ")
}
for (name in names) {
print("${name }"+" ")
}
}
printAll("Hello", "toly,", "I", "am", "fine!")
//0 1 2 3 4
//Hello toly, I am fine!
6.局部函数
/**
* 计算图形边长
*/
fun lenOfShape(vararg els: Double): Double {
fun circle(r: Double): Double {
return r * 2 * Math.PI
}
fun square(x: Double, y: Double): Double {
return 2 * (x + y)
}
fun all(all: DoubleArray): Double {
return all.sum()
}
return when (els.size) {
1 -> circle(els[0])
2 -> square(els[0], els[1])
else -> all(els)
}
}
println(lenOfShape(10.0)) //pi*2*10=62.83185307179586
println(lenOfShape(10.0, 25.0))//(10+25)*2=70.0
println(lenOfShape(10.0, 20.0, 30.0))//10.0+20.0+30.0=60
7.定义函数变量
你没看错,kotlin中函数是一等公民,也是一种数据类型,可以当做一个变量赋值或传参
//定义函数变量
var funV: (Double, Double) -> Double
//函数变量赋值
funV = ::area
//使用函数变量
println(funV(3.0, 3.0))//9
8.lambda表达式
fun main(args: Array<String>) {
//将lambda表达式赋值给变量
var square = { n: Int ->
n * n
}
println(square(9))//8*8
// var square = { n: Int ->
// n * n
// }(9)//可以在尾部调用
//
var res = { base: Int, exp: Int ->
var result = 1
for (i in 1..exp) {
result *= base
}
result
}
println(res(5, 4))//5*5*5*5=625
}
后记、
1.声明:
1----本文由张风捷特烈原创,转载请注明 2----欢迎广大编程爱好者共同交流 3---个人能力有限,如有不正之处欢迎大家批评指证,必定虚心改正 4----你的喜欢与支持将是我最大的动力
2.连接传送门:
更多安卓技术欢迎访问:安卓技术栈 我的github地址:欢迎star 张风捷特烈个人网站,编程笔记请访问:http://www.toly1994.com
3.联系我
QQ:1981462002 邮箱:1981462002@qq.com 微信:zdl1994328
转载于:https://www.cnblogs.com/toly-top/p/9781862.html
相关资源:JAVA上百实例源码以及开源项目