Kotlin函數(shù)

函數(shù)的定義

Kotlin中函數(shù)的定義和Java中的方法還是有很大區(qū)別的捍岳,首先必須有 fun 關鍵字,其他部分內(nèi)容見上圖睬隶。其中 Unit 等價于Java中的 void 锣夹,并且 :Unit 是可以省略的

函數(shù)VS方法

  • 方法可以認為是函數(shù)的一種特殊類型
  • 從形式上看,有 receiver 的函數(shù)即為方法

函數(shù)的類型

  • 第一個例子
fun foo() {}//的函數(shù)類型是:() -> Unit
  • 第二個例子
fun foo(p0: Int): String {
    return ""
}//的函數(shù)類型是:(Int) -> String
  • 第三個例子
class Foo {
    fun bar(p0: String, p1: Long): Any {
        return 0
    }
}

的函數(shù)類型是:

Foo.(String, Long) -> Any//第一種寫法
(Foo, String, Long) -> Any//第二種寫法

前兩個例子比較簡單苏潜,第三個例子中的Foo就是上面提到的函數(shù)和方法區(qū)別中的receiver了银萍。其實receiver就是這種類函數(shù)中隱藏的第一個參數(shù),在Java的方法中我們可以使用this關鍵字訪問類中的成員其實也是因為this是通過方法的第一個參數(shù)被傳入進來的恤左。比較有意思的是在python中receiver是直接顯示的:

class Foo:

    def bar(self,p0,p1):
        pass

函數(shù)的引用

  • 函數(shù)的引用類似C語言中的函數(shù)指針贴唇,可用于函數(shù)傳遞
fun foo() {}//的函數(shù)引用表示為 ::foo
class Foo {
    fun bar(p0: String, p1: Long): Any {
        return 0
    }
}//的函數(shù)引用表示為 Foo::bar

既然是函數(shù)引用,那么就可以通過變量去接收

val r1: () -> Unit = ::foo
val r2: (Foo, String, Long) -> Any = Foo::bar

這里有一點需要注意的是飞袋,如果當我們通過類的實例去表示函數(shù)引用的時候戳气,那么函數(shù)類型中就不再包含receiver了:

val foo = Foo()
val r3: (String, Long) -> Any = foo::bar
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市授嘀,隨后出現(xiàn)的幾起案子物咳,更是在濱河造成了極大的恐慌巷折,老刑警劉巖油吭,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異痕惋,居然都是意外死亡堕虹,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來亿眠,“玉大人竟趾,你說我怎么就攤上這事鞋邑。” “怎么了锡足?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵发框,是天一觀的道長。 經(jīng)常有香客問我鳖枕,道長肝箱,這世上最難降的妖魔是什么链嘀? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮烘豹,結(jié)果婚禮上憔鬼,老公的妹妹穿的比我還像新娘仰禀。我一直安慰自己,他們只是感情好悬嗓,可當我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布悟狱。 她就那樣靜靜地躺著浴麻,像睡著了一般宫纬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上营袜,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天丑罪,我揣著相機與錄音荚板,去河邊找鬼。 笑死吩屹,一個胖子當著我的面吹牛跪另,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播煤搜,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼免绿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了擦盾?” 一聲冷哼從身側(cè)響起嘲驾,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎迹卢,沒想到半個月后辽故,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡腐碱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年誊垢,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片症见。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡喂走,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出谋作,到底是詐尸還是另有隱情芋肠,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布瓷们,位于F島的核電站业栅,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏谬晕。R本人自食惡果不足惜碘裕,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望攒钳。 院中可真熱鬧帮孔,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至姆坚,卻和暖如春澳泵,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背兼呵。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工戏自, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留涯塔,地道東北人瀑晒。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓论笔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親懂昂。 傳聞我的和親對象是個殘疾皇子介时,可洞房花燭夜當晚...
    茶點故事閱讀 45,055評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 可以到掘金,效果更好聊一聊Kotlin函數(shù) 一直想學習下Kotlin凌彬,畢竟已經(jīng)被Android官方宣布kotln ...
    juexingzhe閱讀 725評論 0 2
  • 1,高階函數(shù) 定義 函數(shù)的參數(shù)類型包含函數(shù)或者返回值為函數(shù)類型 如果函數(shù)的參數(shù)只有一個參數(shù)或者最后一個參數(shù)為一個l...
    從心開始的我閱讀 203評論 0 0
  • 1.函數(shù)引用 kotlin中函數(shù)引用跟c++中的方法指針很相似沸柔,函數(shù)引用可以像其他類型的引用一樣作為方法的參數(shù)和返...
    懶癌患者2018閱讀 4,619評論 0 7
  • 人生苦短,我選Kotlin——筆者 Kotlin相比Java很年輕铲敛,也更有潛力勉失,其對函數(shù)式編程的支持也讓其代碼更加...
    孤狼暉閱讀 1,167評論 0 2
  • 在Kotlin中創(chuàng)建集合 上一章我們已經(jīng)使用setOf函數(shù)創(chuàng)建一個set了。同樣的原探,我們也可以用類似的方法創(chuàng)建一個...
    4e70992f13e7閱讀 6,518評論 0 4