kotlin函數(shù)

函數(shù)

參數(shù):Pascal表示法 ---》 name : type

  • 多參數(shù)用逗號隔開
  • 參數(shù)賦值: 例如 name:type = 給予的默認值(= value如果沒有默認值,這部分是可以省略的)
  • 覆蓋方法(override)總是使用與基類型方法相同的默認參數(shù)值婿脸。當覆蓋一個帶有默認參數(shù)值的方法時粱胜,必須從簽名中省略默認參數(shù)值狐树。
具名參數(shù): name = value

在多參數(shù)的函數(shù)中,如果有些參數(shù)添加了默認值抑钟,這時在調用時涯曲,就可以省略掉在塔,但是調用時必須使用具名參數(shù)格式調用幻件,例子如下:
多參函數(shù)

fun foo(bar: Int = 0, baz: Int) { /*……*/ }

省略默認值參數(shù)蛔溃,使用具名參數(shù)調用

foo(baz = 1) // 使用默認值 bar = 0

函數(shù)如果在默認參數(shù)的最后一個參數(shù)是Lambda表達式, 那么它可以用具名參數(shù)在括號內傳入贺待,也可以在括號外傳入
例子:
多默認參數(shù)函數(shù)

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ù)時狠持,所有位置參數(shù)都要放在第一個具名參數(shù)之前疟位。例如喘垂,允許調用f(1,y=2) 但不允許f(x=1,2)。

可以通過使用星號操作符將可變數(shù)量參數(shù)(vararg)以具名形式傳入:

fun foo(vararg string:String){/******/}

調用

foo(string = *arrayOf("a", "b", "c"))

返回Unit函數(shù)

在函數(shù)中Unit的返回類型是可選的:return Unit 或者 return

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

函數(shù)中可以用可變數(shù)量參數(shù)正勒,但是一般都是放在參數(shù)的最后一個(如果不是最后一個,那此參數(shù)后面參數(shù)使用具名參數(shù)語法傳入)章贞,可以用vararg修飾符標記
例子:

fun <T> asList(vararg ts: T): List<T> {
    val result = ArrayList<T>()
    for (t in ts) // ts is an Array
        result.add(t)
    return result
}

調用:

val list = asList(1,2,3)

如果已經有一個數(shù)組并希望將其內容傳給該函數(shù)祥绞,我們使用伸展(spread)操作符(在數(shù)組前面加*)
調用例子:

val a = arrayOf(1, 2, 3)
val list = asList(-1, 0, *a, 4)

函數(shù)的作用域

局部函數(shù)

kotlin支持局部函數(shù)鸭限,即一個函數(shù)在另一個函數(shù)內部

fun dfs(graph: Graph) {
    fun dfs(current: Vertex, visited: MutableSet<Vertex>) {
        if (!visited.add(current)) return
        for (v in current.neighbors)
            dfs(v, visited)
    }

    dfs(graph.vertices[0], HashSet())
}

局部函數(shù)可以訪問外部函數(shù)(即閉包)的局部變量败京,所以在上例中,visited可以是局部變量

fun dfs(graph: Graph) {
    val visited = HashSet<Vertex>()
    fun dfs(current: Vertex) {
        if (!visited.add(current)) return
        for (v in current.neighbors)
            dfs(v)
    }

    dfs(graph.vertices[0])
}

成員函數(shù)

成員函數(shù)是在類或對象內部定義的函數(shù)

class Sample() {
    fun foo() { print("Foo") }
}

成員函數(shù)以點表示法調用

Sample().foo() // 創(chuàng)建類 Sample 實例并調用 foo

泛型函數(shù)

函數(shù)可以有泛型參數(shù)赡麦,通過在函數(shù)名前使用尖括號指定

fun <T> singletonList(item: T): List<T> { /*……*/ }
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末帕识,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子肮疗,更是在濱河造成了極大的恐慌,老刑警劉巖扒接,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異珠增,居然都是意外死亡,警方通過查閱死者的電腦和手機蒂教,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來凝垛,“玉大人,你說我怎么就攤上這事梦皮。” “怎么了剑肯?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長让网。 經常有香客問我呀忧,道長溃睹,這世上最難降的妖魔是什么而账? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任因篇,我火速辦了婚禮,結果婚禮上竞滓,老公的妹妹穿的比我還像新娘咐吼。我一直安慰自己商佑,他們只是感情好锯茄,可當我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布莉御。 她就那樣靜靜地躺著,像睡著了一般礁叔。 火紅的嫁衣襯著肌膚如雪牍颈。 梳的紋絲不亂的頭發(fā)上琅关,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天,我揣著相機與錄音涣易,去河邊找鬼画机。 笑死新症,一個胖子當著我的面吹牛步氏,可吹牛的內容都是我干的徒爹。 我是一名探鬼主播荚醒,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼隆嗅,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了胖喳?” 一聲冷哼從身側響起泡躯,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤丽焊,失蹤者是張志新(化名)和其女友劉穎较剃,沒想到半個月后粹懒,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體重付,經...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡凫乖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了帽芽。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡导街,死狀恐怖,靈堂內的尸體忽然破棺而出搬瑰,到底是詐尸還是另有隱情款票,我是刑警寧澤,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布艾少,位于F島的核電站,受9級特大地震影響缚够,放射性物質發(fā)生泄漏幔妨。R本人自食惡果不足惜谍椅,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望雏吭。 院中可真熱鬧,春花似錦思恐、人聲如沸沾谜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽描焰。三九已至媳否,卻和暖如春荆秦,著一層夾襖步出監(jiān)牢的瞬間篱竭,已是汗流浹背步绸。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工掺逼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留瓤介,地道東北人吕喘。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓刑桑,卻偏偏與公主長得像氯质,于是被迫代替她去往敵國和親祠斧。 傳聞我的和親對象是個殘疾皇子闻察,可洞房花燭夜當晚...
    茶點故事閱讀 45,630評論 2 359

推薦閱讀更多精彩內容

  • 一、 概述 函數(shù):也就是子程序辕漂。高階函數(shù):在數(shù)學和計算機科學中,高階函數(shù)是至少滿足下列一個條件的函數(shù):接受一個或多...
    進擊的小強閱讀 863評論 1 50
  • Kotlin函數(shù) 默認參數(shù)(default arguments)示例代碼 輸出 對于重寫的方法來說钉嘹,子類所擁有的重...
    leofight閱讀 353評論 0 1
  • Kotlin語言中,函數(shù)終于成為了一等公民,支持面向過程變成終于在“Java”陣營中成為了現(xiàn)實隧期。 語法 Kotli...
    歐陽鋒閱讀 1,778評論 0 0
  • 我們學習Kotlin的一個重要環(huán)節(jié)赘娄,函數(shù)的聲明和調用仆潮。將從Kotlin集合、字符串和正則表達式作為重點性置,先來看看如...
    Rocdo閱讀 1,297評論 2 2
  • 可以到掘金,效果更好聊一聊Kotlin函數(shù) 一直想學習下Kotlin鹏浅,畢竟已經被Android官方宣布kotln ...
    juexingzhe閱讀 725評論 0 2