欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Kotlin方法與Lambda表達式實踐使用介紹

 更新時間:2022年09月13日 15:45:18   作者:Ken'  
這篇文章主要介紹了Kotlin方法與Lambda表達式實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

前言

經(jīng)過前面對 Kotlin 的介紹,相信大家已經(jīng)能對 Kotlin 有了一個基本的認識。 從這節(jié)開始,我就為大家講解 Kotlin的方法以及Lambda表達式等高級操作。

一、Kotlin的方法

1、方法聲明

fun functionLearn(days: Int): Boolean {
 return days > 100
}

成員方法

//成員方法
class Person {
 fun test1() {
 println("成員方法")
 }
}
Person().test1()

類方法

Kotlin 中并沒有 static 關(guān)鍵字,不過我們可以借助 companion object 來實現(xiàn) 類方法的目的。

(1)companion object 實現(xiàn)的類方法

class Person {
 companion object {
 fun test2() {
 println("companion object 實現(xiàn)的類方法")
 }
 }
}
Person.test2()

(2)靜態(tài)類

如果我們想實現(xiàn)一個工具 util 的話,可以借助 object 來創(chuàng)建一個靜態(tài)類:

/**
* 整個靜態(tài)類
*/
object NumUtil {
 fun double(num: Int): Int {
 return num * 2
 }
}

(3)全局靜態(tài)

我們可以直接新建一個 Kotlin file 然后定義一些常量、方法。

單表達式方法

當方法返回單個表達式時,可以省略花括號并且在 = 符號之后指定代碼體即可:

fun double(x: Int): Int = x * 2

當返回值類型可由編譯器推斷時,顯式聲明返回類型是可選的:

fun double(x: Int) = x * 

2、方法參數(shù)

默認參數(shù)

方法參數(shù)可以有默認值,當省略相應的參數(shù)時使用默認值。與其 Java 相比, 這可以減少重載數(shù)量:

fun read(b: Array<Byte>, off: Int = 0, len: Int = b.size) { /*……*/ }

我們可以通過類型后面的 = 來設(shè)置默認值。

如果一個默認參數(shù)在一個無默認值的參數(shù)之前,那么該默認值只能通過使用 具名參數(shù)調(diào)用該方法 來使用:

fun foo(bar: Int = 0, baz: Int) { /*……*/ }
foo(baz = 1) // 使用默認值 bar = 0

如果在默認參數(shù)之后的最后一個參數(shù)是 lambda 表達式,那么它既可以作為 具名參數(shù)在括號內(nèi)傳 入,也可以在括號外傳入:

fun foo(bar: Int = 0, baz: Int = 1, qux: () -> Unit) { /*……*/ }
foo(1) { println("hello") } // 使用默認值 baz = 1
foo(qux = { println("hello") }) // 使用兩個默認值 bar = 0 與 baz = 1
foo { println("hello") } // 使用兩個默認值 bar = 0 與 baz = 1

可變數(shù)量的參數(shù)

方法的參數(shù)(通常是最后一個)可以用 vararg 修飾符標記:

fun append(vararg str: Char): String {
 val result = StringBuffer()
 for (char in str) {
 result.append(char)
 }
 return result.toString()
}

允許將可變數(shù)量的參數(shù)傳遞給方法:

append('h', 'e', 'l', 'l', 'o')

可變參數(shù)的要求:

• 只有一個參數(shù)可以標注為 vararg;

• 如果 vararg 參數(shù)不是列表中的最后一個參數(shù), 可以使用具名參數(shù)語 法傳遞其后的參數(shù)的 值,或者,如果參數(shù)具有方法類型,則通過在括 號外部傳一個 lambda。

當我們調(diào)用 vararg 方法時,我們可以一個接一個地傳參,例如 append('h', 'e', 'l', 'l', 'o'),或者,如果我們已經(jīng)有一個數(shù)組并希望將其內(nèi)容傳給該方法, 我們使用伸展(spread)操作符(在數(shù)組前面加 *):

val world = charArrayOf('w', 'o', 'r', 'l', 'd')
val result = append('h', 'e', 'l', 'l', 'o',' ', *world)

3、方法作用域

在 Kotlin 中方法可以在文件頂層聲明,這意味著你不需要像一些語言如 Java、C# 那樣需要創(chuàng)建一個類來保存一個方法。 此外除了頂層方法, Kotlin 中方法也可以聲明在局部作用域、作為成員方法以及擴展方法。

局部方法

Kotlin 支持局部方法,即一個方法在另一個方法內(nèi)部:

fun magic(): Int {
 fun foo(v: Int): Int {
 return v * v
 }
 val v1 = (0..100).random()
 return foo(v1)
}

局部方法可以訪問外部方法(即閉包)的局部變量。

二、Lambda表達式

在 Java 8 的時候開始支持 Lambda 表達式,目前 Lambda 語法在 Java 中已 經(jīng)被廣泛的運用,Lambda 表達式可以理解為是一種語法糖,值得慶幸的 是,Kotlin 一經(jīng)開源成熟就已經(jīng)支持這種語法。

Lambda 表達式的本質(zhì)其實是匿名方法,因為在其底層實現(xiàn)中還是通過匿名 方法來實現(xiàn)的。但是我們在用的時候不必關(guān)心起底層實現(xiàn)。不過 Lambda 的 出現(xiàn)確實是減少了代碼量的編寫,同時也是代碼變得更加簡潔明了。

Lambda 作為方法式編程的基礎(chǔ),其語法也是相當簡單的。這里先通過一段 簡單的代碼演示沒讓大家了解 Lambda 表達式的簡潔之處:

view.setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View v) {
 Toast.makeText(v.getContext(), "Lambda 簡潔之道",
Toast.LENGTH_LONG).show();
 }
});

VS

view.setOnClickListener { v -> Toast.makeText(v.context, "Lambda 簡潔之道
", Toast.LENGTH_LONG).show() }

1、Lambda表達式的特點

語法如下:

無參數(shù)的情況 :

val/var 變量名 = { 操作的代碼 }

有參數(shù)的情況:

val/var 變量名 : (參數(shù)的類型,參數(shù)類型,...) -> 返回值類型 = {參數(shù) 1,參數(shù)
2,... -> 操作參數(shù)的代碼 }

可等價于

// 此種寫法:即表達式的返回值類型會根據(jù)操作的代碼自推導出來。
val/var 變量名 = { 參數(shù) 1 : 類型,參數(shù) 2 : 類型, ... -> 操作參數(shù)的代碼 }

lambda 表達式作為方法中的參數(shù)的時候,這里舉一個例子:

fun test(a : Int, 參數(shù)名 : (參數(shù) 1 : 類型,參數(shù) 2 : 類型, ... ) -> 表達式返回
類型){
 ...
}

2、Lambda實踐

如何使用 it

認識 it

• it 并不是 Kotlin 中的一個關(guān)鍵字(保留字)

• it 是在當一個高階方法中 Lambda 表達式的參數(shù)只有一個的時候可以使用 it 來使 用此參數(shù)

• it 可表示為單個參數(shù)的隱式名稱,是 Kotlin 語言約定的

• 實例 A:單個參數(shù)的隱式名稱

// 這里舉例一個語言自帶的一個高階方法 filter,此方法的作用是過濾掉不滿足條
件的值。
val arr = arrayOf(1,3,5,7,9)
// 過濾掉數(shù)組中元素小于 2 的元素,取其第一個打印。這里的 it 就表示每一個元
素。
println(arr.filter { it < 5 }.component1())
//結(jié)合上文的
testClosure(1)(2) {
println(it)
}

如何使用下劃線_

在使用 Lambda 表達式的時候,可以用下劃線(_)表示未使用的參數(shù),表示不 處理這個參數(shù)。

在遍歷一個 Map 集合的時候,這當非常有用

val map = mapOf("key1" to "value1", "key2" to "value2", "key3" to
"value3")
map.forEach { (key, value) ->
 println("$key \t $value")
}
// 不需要 key 的時候
map.forEach { (_, value) ->
 println(value)
}

總結(jié)

本文僅僅簡單介紹了pandas的使用,而pandas提供了大量能使我們快速便捷地處理數(shù)據(jù)的函數(shù)和方法。

到此這篇關(guān)于Kotlin方法與Lambda表達式實踐使用介紹的文章就介紹到這了,更多相關(guān)Kotlin方法與Lambda表達內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論