1. 程式人生 > >高階函式和Lambda表示式

高階函式和Lambda表示式

高階函式就是可以接受函式作為引數並返回一個函式的函式。
為高階函式傳遞函式型別引數值可以用如下3種方法
1. 直接定義函式,並傳遞,在函式名前需要加::
1. 使用Lambda表示式
1. 使用匿名函式

//  高階函式(higher-order function)

interface Product
{
    var area:String
    fun sell(name:String)
}

class MobilePhone:Product
{
    override var area: String = ""

    override fun sell(name: String
) { println("銷售${name}") } override fun toString(): String { return area } } // 高階函式 fun processProduct(product:Product, area:(name:String)->String):Product { product.area = area("iPhone") return product } fun mobilePhoneArea(name:String):String { return "${name} 美國"
} fun main(args: Array<String>) { var product = MobilePhone() processProduct(product, ::mobilePhoneArea) println(product) // 使用Lambda表示式 processProduct(product) { name->"${name} 法國" } println(product) // 省略了Lambda表示式的引數 processProduct(product) { "${it}蘇聯"
} println(product) // 使用匿名函式 processProduct(product,fun(name:String):String = "${name} 中國") println(product) }

輸出:
這裡寫圖片描述