91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Kotlin是什么意思

發布時間:2022-01-11 16:55:20 來源:億速云 閱讀:878 作者:柒染 欄目:編程語言

Kotlin是什么意思,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

一、Kotlin是什么

Kotlin 是一個用于現代多平臺應用的靜態編程語言,由 JetBrains 開發。Kotlin可以編譯成Java字節碼,也可以編譯成JavaScript,方便在沒有JVM的設備上運行。Kotlin已正式成為Android官方支持開發語言。

二、Kotlin的就應用領域

學完kotlin能成為全棧工程師。

不僅能編寫web前端,web后端,Android移動端,還可以編寫server腳本,桌面游戲。

三、Kotlin的特點

靜態強類型性語言

運行在JVM上

可編譯成JavaScript代碼

與Java100%兼容

四、Kotlin的發展趨勢

2011年進行開源,2017年在github上star數量已經達到17k。目前 花瓣、豆瓣 APP 以及 JetBrains 全線編輯器都在使用 Kotlin,國內很多初創公司也都

在使用 Kotlin(尤其是應用于 Android 開發)

五、Kotlin的優勢

全面支持Lambda表達式

數據類(Data classes)

函數字面量和內聯函數(Function literals & inline functions)

函數擴展(Extension functions)

空安全(Null safety)

智能轉換(Smart casts)

字符串模版(String templates)

主構造函數(Primary constructors)

類委托(Class delegation)

類型推斷(Type inference)

單例(Singletons)

聲明點變量(Declaration-site variance)

區間表達式(Range expressions)

六、Kotlin中的函數

內聯函數

Android開發中,打印信息一般我們會用到Log類,Log中每個方法我們都要傳兩個參數,第一個tag參數在Kotlin中我們可以像下面封裝一下,這樣就只需要傳一個參數。

inline fun <reified T> T.debug(log:Any)

{

Log.d(T::class.simpleName, log.toString())

}

它可以通過泛型參數 T 來獲取到T的具體類型,并且拿到它的類名&mdash;&mdash;當然,如果你愿意,你甚至可以調用它的構造方法來構造一個對象出來&mdash;&mdash;為什么 Kotlin 可以做到呢?因為這段代碼是 inline 的,最終編譯時是要編譯到調用它的代碼塊中,這時候T的類型實際上是確定的,因而 Kotlin 通過 reified 這個關鍵字告訴編譯器,T 這個參數可不只是個擺設,我要把它當實際類型來用。

在高階函數前增加inline注解可以指定函數內聯,inline 標記即影響函數本身也影響傳遞進來的 lambda 函數:所有的這些都將被關聯到調用點。內聯可能會引起生成代碼增長,但我們可以合理的解決它(不要內聯太大的函數)。也可以使用noinline來指定某些函數不進行內聯。

inline fun foo(inlined: () -> Uint, @noinline notInlined: () -> Unit) {

//...

}

可以內聯的 lambda 表達式只能在內聯函數內部調用或者作為可內聯的參數傳遞, 但是 noinline 的可以以任何我們喜歡的方式操作:存儲在字段中、傳送它等等。

單表達式函數

如果一個函數的函數體只有一個表達式,函數體可以直接寫在 “=”之后,也就是這樣:

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

fun eval(expr: Expr): Double = when(expr) {

is Expr.Const -> expr.number

is Expr.Sum -> eval(expr.e1) + eval(expr.e2)

Expr.NotANumber -> Double.NaN

// the `else` clause is not required because we've covered all the cases

}

這里使用了when關鍵字,類似于java中的switch,但比之更強大。

匿名函數

/**

* 匿名函數,沒有名字,其他語法和常規函數類似

*

* 聲明一個匿名函數,這里用表達式來表示函數體,也就是單表達式函數

*/

var test3= fun(x:Int,y:Int):Int=x+y

/**

* 聲明一個匿名函數,這里用代碼塊來表示函數體

*/

var test4= fun(x:Int,y:Int):Int {

return x+y

}

/**

* 聲明一個匿名函數,當返回值類型可以推斷出,可以省略

*/

var test5= fun(x:Int,y:Int)=x+y

fun main(args: Array<String>) {

println(test3(1,2))

println(test4(1,2))

println(test5(1,2))

}

高階函數與lambda表達式

高階函數就是可以接受函數作為參數或返回一個函數的函數。比如 lock() 就是一個很好的例子

fun lock<T>(lock: Lock, body: () -> T ) : T {

lock.lock()

try {

return body()

}

finally {

lock.unlock()

}

}

關于Kotlin是什么意思問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

邢台市| 宜兰市| 宾阳县| 安化县| 加查县| 察雅县| 德安县| 资讯| 许昌县| 壶关县| 靖边县| 台安县| 张家口市| 乳山市| 凤冈县| 湘乡市| 织金县| 麻江县| 壤塘县| 荔波县| 巨鹿县| 清流县| 北海市| 静乐县| 金门县| 青神县| 湖口县| 镇赉县| 滦平县| 阿荣旗| 台北市| 巫溪县| 鄂托克前旗| 吉木乃县| 绍兴县| 西安市| 大田县| 和顺县| 庆阳市| 通化市| 惠水县|