再见kotlin--02函数

mac2022-06-30  111

零、前言

玩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上百实例源码以及开源项目
最新回复(0)