如何在使用Int或Double時訪問函數(shù)

我是Kotlin(I的新手,有Web/JS經(jīng)驗)。

我試圖訪問下面的函數(shù),但我無法訪問(根本沒有顯示)。假設它位于對象SomethingUtil內(nèi)部,并使用其他文件導入

fun Int.something(num:Int): Int {
    return num
}

val result = SomethingUtil.something(不訪問/顯示),但當我嘗試在沒有關鍵字IntDouble的情況下訪問時,我沒有問題

fun something(num:Int): Int {
    return num
}

val result = SomethingUtil.something但這里沒問題

我正在試圖從官方文檔中理解/找到什么意思(很明顯,這個函數(shù)將是整數(shù)),但不知道這是什么意思(我認為它是中綴似乎不是)

? 最佳回答:

添加Int.something意味著“向Int的行為添加函數(shù)”。這稱為“擴展function.”。此類函數(shù)的用法類似于1.something(2)。在該函數(shù)的大括號內(nèi),調(diào)用this將返回調(diào)用它的Int,或者在本例中返回1

不幸的是,擴展函數(shù)不能在定義它們的類之外訪問,但當您需要在同一類中多次執(zhí)行類似操作時,它們?nèi)匀缓苡杏谩?/p>

以下面兩個類為例。

object SomethingUtil {
  fun Int.something(num:Int): Int {
    return this + num
  }
  fun Int.something2(num:Int): Int {
    return num
  }
  fun something(num:Int): Int {
    return num
  }
  fun add(num1:Int, num2:Int):Int {
    return num1.something(num2)
  }
  fun replace(num1:Int, num2:Int):Int {
    return num1.something2(num2)
  }
}

fun main() {
  println(SomethingUtil.something(1)) //prints 1
  println(SomethingUtil.add(4,5)) //prints 9
  println(SomethingUtil.replace(3,6)) //prints 6
}

我無法從main()方法中訪問前兩個函數(shù),因為這會導致編譯器錯誤。因此,我只限于訪問其他三個。然而,給定這個示例,您可能會看到這個對象中正則函數(shù)和擴展函數(shù)之間的區(qū)別。

主站蜘蛛池模板: 国产婷婷色一区二区三区| 午夜视频一区二区三区| 无码人妻一区二区三区在线水卜樱| 亚洲国产精品一区二区三区久久| 国产在线一区二区| 日本v片免费一区二区三区| 亚洲AV无码一区二区三区系列 | 亚洲美女高清一区二区三区| 亚洲国产精品一区二区久| 国产午夜精品一区理论片飘花| 日韩一区二区三区电影在线观看| 亚洲国产高清在线精品一区| 国产丝袜美女一区二区三区| 免费一区二区无码视频在线播放| 精品久久久久久无码中文字幕一区 | 免费观看日本污污ww网站一区| 91在线精品亚洲一区二区| 激情内射日本一区二区三区| 国产一区二区三区日韩精品| 亚洲av日韩综合一区二区三区| 中文字幕乱码人妻一区二区三区| A国产一区二区免费入口| 福利电影一区二区| 国产人妖视频一区在线观看| 无码人妻aⅴ一区二区三区| 麻豆AV一区二区三区| 色欲综合一区二区三区| 久久国产精品一区免费下载| 色狠狠色噜噜Av天堂一区| 国产免费播放一区二区| 亚洲国产成人久久一区WWW | 亚洲日本一区二区三区在线| 亚洲av区一区二区三| 日韩动漫av在线播放一区| 国产在线一区观看| 国产在线一区二区杨幂| 色多多免费视频观看区一区| 国产在线一区视频| 国产福利电影一区二区三区久久老子无码午夜伦不 | 亚洲日韩激情无码一区| 精品国产一区二区三区久久|