第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

Kotlin 手記 -- 高階函數(shù)

標簽:
Kotlin

接收Lambda参数的函数就可以称为具有函数式编程风格的API

高阶函数的定义:
如果一个函数接收另一个函数作为参数,或者返回值的类型是另一个函数,那么该函数就称为高阶函数。

编程语言中有整型、布尔型等字段类型,而Kotlin又增加了一个函数类型的概念。
如果我们将这种函数类型添加到一个函数的参数声明或者返回值声明当中,那么这就是一个高阶函数了。

定义一个函数类型,基本规则如下:

(String, Int) -> Unit

-> 左边的部分就是用来声明该函数接收什么参数的,
多个参数之间使用逗号隔开,如果不接收任何参数,写—对空括号就可以了。
-> 右边的部分用于声明该函数的返回值是什么类型,
如果没有返回值就使用Unit,它大致相当于Java中的void。

将函数类型添加到某个函数的参数声明或者返回值声明上,那么这个函数就是—个高阶函数了,
如下所示:

fun example(func: (String, Int) -> Unit) {
    func("hello", 123)
}

使用示例:

fun plus(num1: Int, num2: Int): Int {
    return num1 + num2
}
fun minus(num1: Int, num2: Int): Int {
    return num1 - num2
}

fun main() {
    val num1 = 100
    val num2 = 80
    val result1 = num1AndNum2(num1, num2, ::plus)
    val result2 = num1AndNum2(num1, num2, ::minus)
    println("result1 is $result1")
    println("result2 is $result2")
}

第三个参数使用了::plus和::minus这种写法。
这是一种函数引用方式的写法,表示将plus()和minus()函数作为参数传递给num1AndNum2()函数

Kotlin还支持其他多种方式来调用高阶函数,比如Lambda表达式、匿名函数、成员引用等。
其中,Lambda表达式是最常见也是最普遍的高阶函数调用方式

fun main() {
    val num1 = 100
    val num2 = 80
    val result1 = num1AndNum2(num1, num2) { n1, n2 ->
        n1 + n2
    }
    val result2 = num1AndNum2(num1, num2) { n1, n2 ->
        n1 - n2
    }
    println("result1 is $result1")
    println("result2 is $result2")
}

Lambda表达式同样可以完整地表达—个函数的参数声明和返回值声明(Lambda表达式中的最后—行代码会自动作为返回值)

接下来我们就使用高阶函数模仿实现—个类似 apply函数 的功能。

fun StringBuilder.build(block: StringBuilder.() -> Unit): StringBuilder {
    block()
    return this
}

fun main() {
    val list = listOf("Apple", "Banana", "Orange", "Pear", "Grape")
    val result = StringBuilder().build {
        append("Start eating fruits.\n")
        for (fruit in list) {
            append(fruit).append(" ")
        }
        append("Ate all fruits.\n")
    }
    println(result.toString())
}
點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
JAVA開發(fā)工程師
手記
粉絲
3
獲贊與收藏
0

關(guān)注作者,訂閱最新文章

閱讀免費教程

  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學(xué)

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消