日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

22. Kotlin学习笔记 (一) 约定

發布時間:2024/1/17 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 22. Kotlin学习笔记 (一) 约定 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.創建DTOs(POJOs/POCOs)

data?class?Customer(val?name:?String,?val?email:?String)

創建一個Customer類需要提供下面功能:

getters 為所有的屬性提供getters(為var類型提供setters, val類型不可變,不需要提供)

equals()

hashcode()

toString()

copy()

component1(), component2(), …, for all properties (see Data classes)


2. ?為函數提供默認參數

fun?foo(a:?Int?=?0,?b:?String){println("a:?${a},?b:?${b}") }


3. 過濾一個列表

var?posi?=?lists.filter?{?a->a.startsWith('a')?}

或者更簡潔:

posi?=?lists.filter?{?it.startsWith('a')?}


4. String插入

println("Name?$name")


5. 示例檢查

when?(x)?{????is?Foo?->?...????is?Bar?->?...????else???->?... }


6. 打印map和或者list

var?maps?=?mapOf("a"?to?1,?"b"?to?2,?"c"?to?3) for((k,v)?in?maps){println("k:?${k},?v:?${v}") }


7. 使用'范圍'

for(i?in?1..100)?{print("${i}?") }for(i?in?1?until?10)?{}for(x?in?1..10?step?2)?{}for(x?in?10?downTo?1)?{}var?x?=?3 if?(x?in?1..10)?{println("xxx?in") }


8. ?只讀list(注意var和val區別)

val?list?=?listOf("a",?"b",?"c")


9. 只讀map

val?map?=?mapOf("a"?to?1,?"b"?to?2,?"c"?to?3)


10. 訪問map

var?maps?=?mapOf("a"?to?1,?"b"?to?2,?"c"?to?3) println(maps["b"])


11. 懶漢式屬性?

val?p:?String?by?lazy?{????//?compute?the?string }


12. 擴展功能(個人覺得比較強大,類似于注入?)

fun?String.testAddMethod(){println(this) }"abcd".testAddMethod()


13. 單例

object?Resource?{val?name?=?"name?Resource" }


14. if != null的快速寫法

val?files?=?listOf("a",?"b",?"c") println(files?.size)


15. if else 快速寫法

fun?getNil():String?{return?null }fun?main(args:?Array<String>)?{var?files?=?getNil()println(files?.length?:?"empty") }


16. 如果為null執行一段語句

files?:println("is?null")


17. 如果不為null執行一段語句

files?.let?{?println("not?null")?}


18. 通過when語句返回

var?string?=?"b" println(when(string)?{"a"?->0"b"?->1else?->?100 })


19. try/catch表達式

fun?test()?{????val?result?=?try?{????????count()????}?catch?(e:?ArithmeticException)?{????????throw?IllegalStateException(e)???? }????//?Working?with?result}


20. if表達式

val?a?=?2var?result?=?if(a?==?1)?{"one" }?else?if(a?==?2)?{"two" }else?{"three" }


21. 使用構造者模式

fun?arrayMinusOnes(size:?Int):IntArray?{return?IntArray(size).apply?{?fill(-1)?} }


22. 單一表達式函數

fun?single(size:?Int)?=?size?*?10相當于是: fun?single(size:?Int):?Int?{return?size?*?4 }這個可以和其他約定一起組合,產生更簡短的代碼,比如when表達式:fun?transfrom(color:?Int):String?=?when?(color)?{1->?"red"2->?"blue"else->?"other?color" }


23. 調用一個對象的多個方法使用with

省略了obj.xxx()

fun?main(args:?Array<String>)?{val?kotlin?=?RunKotlin()with(kotlin)?{penDown()println("zzz")forward(2.0)} }class?RunKotlin?{fun?penDown(){println("penDown")}fun?penUp(){println("penUp")}fun?turn(degress:?Double){println(degress)}fun?forward(pixels:?Double){println(pixels)} }


24.?Java 7's try with resources

val?stream?=?Files.newInputStream(Paths.get("/some/file.txt")) stream.buffered().reader().use?{?reader?->????println(reader.readText()) }


25.?Convenient form for a generic function that requires the generic type information

/??public?final?class?Gson?{ //?????... //?????public?<T>?T?fromJson(JsonElement?json,?Class<T>?classOfT)?throws?JsonSyntaxException?{ //?????...inline?fun?<reified?T:?Any>?Gson.fromJson(json):?T?=?this.fromJson(json,?T::class.java)



26. 構造可能為null的布爾值

val?b:?Boolean??=?... if?(b?==?true)?{????... }?else?{????//?`b`?is?false?or?null }






轉載于:https://blog.51cto.com/483181/1931893

總結

以上是生活随笔為你收集整理的22. Kotlin学习笔记 (一) 约定的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。