zoukankan      html  css  js  c++  java
  • 再见kotlin--02函数

    零、前言

    玩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

  • 相关阅读:
    Java8 Period.between方法坑及注意事项
    mybatis入门-第一个程序
    mybatis入门-框架原理
    初识servlet--未完成
    初识servlet
    session是什么
    session工作原理简介
    笔记本维修介绍
    j2se 总结
    maven
  • 原文地址:https://www.cnblogs.com/toly-top/p/9781862.html
Copyright © 2011-2022 走看看