前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >再见kotlin--02函数

再见kotlin--02函数

作者头像
张风捷特烈
发布2018-09-29 11:33:11
4680
发布2018-09-29 11:33:11
举报
零、前言

玩java也有一段时间了,个人还是非常喜欢java的。 对Kotion也有层有耳闻,以前也接触过写语法,写起来感觉有点像js,和python,又有种食之无味,弃之可惜的感觉,最后还是搁下了。 久了不用也忘得差不多了,现在重拾一下,写些笔记记录一下。


函数作为编程语言中的可复用单元,对编程的简化起到至关重要的作用。 kotlin作为函数是一等公民的一种编程语言,函数似乎成了最闪耀的明星。

一、语法的定义
1.kotlin语法之----函数定义(万变不离其宗)
代码语言:javascript
复制
fun 函数名(变量1:变量类型|n+):返回值类型{
    函数体
    return 
}

/**
 * 计算矩形面积
 */
fun area(x: Double, y: Double): Double {
    println("x=${x}  y=${y}")
    return x * y
}

2.函数调用的四种方式
代码语言:javascript
复制
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.函数默认参数
代码语言:javascript
复制
fun area(x: Double, y: Double = 1.0): Double {
    println("x=${x}  y=${y}")
    return x * y
}
代码语言:javascript
复制
area(3.0) //x=3.0  y=1.0

4.单表达式函数:相当于对上面的简写形式
代码语言:javascript
复制
/**
 * 单表达式函数
 */
fun area(x: Double, y: Double) = x * y

5.变参测试---vararg
代码语言:javascript
复制
/**
 * 变参测试
 */
fun printAll(vararg names: String) {
    for (i in names.indices) {
        print("${i }"+" ")
    }

    for (name in names) {
        print("${name }"+" ")
    }
}
代码语言:javascript
复制
printAll("Hello", "toly,", "I", "am", "fine!")
//0 1 2 3 4
//Hello toly, I am fine! 

6.局部函数
代码语言:javascript
复制
/**
 * 计算图形边长
 */
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)
    }
}
代码语言:javascript
复制
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中函数是一等公民,也是一种数据类型,可以当做一个变量赋值或传参

代码语言:javascript
复制
//定义函数变量
var funV: (Double, Double) -> Double
//函数变量赋值
funV = ::area
//使用函数变量
println(funV(3.0, 3.0))//9

8.lambda表达式
代码语言:javascript
复制
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----你的喜欢与支持将是我最大的动力

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.09.28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 零、前言
  • 一、语法的定义
    • 1.kotlin语法之----函数定义(万变不离其宗)
      • 2.函数调用的四种方式
        • 3.函数默认参数
          • 4.单表达式函数:相当于对上面的简写形式
            • 5.变参测试---vararg
              • 6.局部函数
                • 7.定义函数变量
                  • 8.lambda表达式
                  • 后记、
                    • 1.声明:
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档