美文网首页
#4 kotlin 函数

#4 kotlin 函数

作者: JamesSawyer | 来源:发表于2019-07-19 01:47 被阅读0次

    函数重载

    参数个数不同,参数类型不同。返回值不同不算重载

    fun printMultiple(multipiler: Int, addValue: Int) {}
    fun printMultiple(multipiler: String, addValue: String) {}
    fun printMultiple(multipiler: Int, addValue: Int, thirdValue: Int) {}  
    

    如果返回类型不同,不能算重载,因此函数名不能一样

    fun getValue(): Int {
      return 43
    }
    fun getValue(): String {
      return "hello world"
    }
    // 报错
    // 上面的返回类型不一致,不能算重载
    

    形参不能重新赋值

    fun add(a: Int, b: Int): Int {
        a += 1 // 报错 val cannot be reassigned
    }
    // 需更改为
    fun add(a: Int, b: Int): Int {
      val r = a + 1
    }
    

    注意第一种写法在js中是没有什么问题的。

    函数作为参数和变量

    作为变量赋值给另一变量时的写法要注意

    fun add(a: Int, b: Int): Int {
      return a + b
    }
    // 赋值给另一个变量
    val myAdd = ::add
    
    // 作为参数
    fun printResult(addFunc: (Int, Int) -> Int, a, b) {
      val result = add(a, b)
      println("result: $result")
    }
    printResult(::myAdd, 10, 20)
    

    ::add 这个写法真有点丑 🤣

    返回空值

    kotlin中的返回空值使用 Unit, 类似swift中的 Void

    fun saySomething: Unit {
      println("hello")
    }
    

    Lamada 表达式

    这个和swift的语法比较相似

    // kotlin
    // 写法1
    val sum: (Int, Int) -> Int = { x, y -> x + y}
    println("sum: ${sum(12, 12)}")
    
    // 写法2
    val sum2 = {x: Int, y: Int -> x + y}
    

    Swift 中的写法

    // swift
    let sum: (Int, Int) -> Int = {
        $0 + $1
    }
    
    
    let sum2 = { (x: Int, y: Int) -> Int in return x + y}
    

    类型别名 typealias

    这个和swift中的用法一致

    typealias operation = (Int, Int) -> Int
    
    fun main() {
    
        val add = {x: Int, y: Int -> x + y}
        
      // 此处使用上面的operation 代替
      fun printResult(addFunc: operation, a, b) {
        val result = add(a, b)
        println("result: $result")
      }
    }
    

    知识点:

    • 函数重载的概念,这个js中是不存在的
    • 形参使用是需要注意
    • 函数作为变量或者参数传递时的使用方式, ::funcName 这种写法
    • 基础的lamada表达式的写法
    • typealias 的用法

    2019年07月19日00:44:56

    相关文章

      网友评论

          本文标题:#4 kotlin 函数

          本文链接:https://www.haomeiwen.com/subject/pfydlctx.html