22. Kotlin学习笔记 (一) 约定
1.創建DTOs(POJOs/POCOs)
創建一個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. 過濾一個列表
或者更簡潔:
posi?=?lists.filter?{?it.startsWith('a')?}4. String插入
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表達式
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学习笔记 (一) 约定的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Win10 Build 11099和11
- 下一篇: 超好用!5款开源的移动自动化测试工具