不知道如何測試下列語法可以參考如何使用Android Studio 測試資料?
本篇
比較偏向一些小技巧的使用
- 為基礎類型新增函式
- Abstract技巧使用
- throw使用方法
- 利用let特性處理資料型態?
- 快速初始化Array
- 快速將兩個資料交換
- 自定義待處理的fun
- 幫loop設定標籤
private fun String.clearSpace(): String = replace(" ", "") @Test fun test() { val string = "A B C D E F G".clearSpace() println("string = $string")//string = ABCDEFG }
abstract class MyAbstractClass { var value: Int = -1 set(value) { if(value > 0) { field = value success() } else { field = -1 error() } } abstract fun success() abstract fun error() } @Test fun test() { val myObject = object : MyAbstractClass() { override fun success() { println("success") } override fun error() { println("error") } } myObject.value = -1//打印error myObject.value = 1//打印success }
fun setValue(data: Any?) { if(data is Int) { println("data is Int: $data") } else { throw NumberFormatException("data is not Int") } } @Test fun test() { val data = "data String" var result = false try { println("try")//1.先打印此 setValue(data) result = true } catch (e: NumberFormatException) { println("catch")//2.再來此 e.printStackTrace() } finally { println("finally")//3.再來此 //此處無論是經過try還是catch,之後都會先經過這 } println("result $result")//4.result false }
var data: String? = "Apple" var data2: String? = null @Test fun test() { data = data?.let { "transform $data" } ?: "error A" data2 = data2?.let { "transform $data" } ?: "error B" println("data = $data, data2 = $data2") //data = transform Apple, data2 = error B }
fun initIntArray(size: Int): IntArray { return IntArray(size).apply { fill(-1) } } fun initBooleanArray(size: Int): BooleanArray { return BooleanArray(size).apply { fill(false) } } @Test fun test() { val array = initIntArray(5) array.forEach { println(it) } /* -1 -1 -1 -1 -1 */ val array2 = initBooleanArray(5) array2.forEach { println(it) } /* false false false false false */ }
@Test fun test() { var a = 1 var b = 2 a = b.also { b = a } println("a = $a, b = $b")//a = 2, b = 1 }
7. 自定義待處理的fun
fun calcTaxes(): BigDecimal = TODO("test TODO") @Test fun test() { //會拋出下方 //kotlin.NotImplementedError: An operation is not //implemented: test TODO calcTaxes() }
8. 設定return標籤
@Test fun test() { loop@ for (i in 1..5) { for (j in 1..5) { if (i == 2 && j == 2) break@loop println("i = $i, j = $j") } } /* i = 1, j = 1 i = 1, j = 2 i = 1, j = 3 i = 1, j = 4 i = 1, j = 5 i = 2, j = 1 */ } @Test fun test2() { listOf(1, 2, 3, 4, 5).forEach { if (it == 3) return // non-local return directly to the caller of foo() print(it) } println("this point is unreachable") //打印12 } @Test fun test3() { listOf(1, 2, 3, 4, 5).forEach lit@{ if (it == 3) return@lit print(it) } println(" done with explicit label") //打印1245 done with explicit label } @Test fun test4() { listOf(1, 2, 3, 4, 5).forEach { if (it == 3) return@forEach print(it) } println(" done with implicit label") //打印1245 done with explicit label }
上面皆是版本ext.kotlin_version = “1.5.0″測試的
更多相關可以參考這裡
相關文章
Android Kotlin 基本語法1 | Android Kotlin 基本語法2 |
1. var 可變變數 2. val 不可變更參數 3. Array 用法 4. ArrayList 用法 5. List的filter、sort、map、forEach 6. when 用法 7. fun 函式用法 8. if 表達式 9. for 表達式 10. 擴充函數(自定義函式) | 1. 操作符重載 2. 資料區間用法 3. map使用方法 4. 內部靜態變數 5. 靜態變數 6. 當資料如果是?型態宣告 7. 資料使用!!,強制將Int?轉Int 8. data class用法 9. 強制轉型 10. run、with、apply、also用法 |
Android Kotlin 基本語法3 | Android Kotlin Classes and Objects-1 |
1. class多建構式 2. 內部class用法 3. interface 4. enum class 用法 5. sealed class 用法 6. open 用法 | 1. 多個class與執行順序 2. init與constructor執行優先序 3. open繼承與禁止繼承 4. 不同的寫法,影響override能不能改變值 5. 繼承與當前Class執行順序 6. 由inner class去找parent的super 7. 繼承多個class時,選擇指定的Parent 8. private protected public internal修飾符差異 |
Android Kotlin Classes and Objects-2 | Android Kotlin 委託屬性 |
1. 幫List新增swap功能 2. 擴充外加函式,幫助程式簡化 3. T,多類型引入 4. T搭配in、out使用 5. 1個對象的object用法 6. 類型別名 7. 內聯類 8. 委託 | 1. 變數委託 2. lazy懶加載用法+String.split 3. 可觀察屬性observable 4. 委託內建map 5. 本地委託屬性,此方法可以減少加載 6. 委託屬性,唯獨與可讀可寫的方法 7. 將舊方法棄用 |
訂閱Codeilin的旅程,若有最新消息會通知。
廣告