不知道如何測試下列語法可以參考如何使用Android Studio 測試資料?
- var 可變變數
- val 不可變更參數
- Array 用法
- ArrayList 用法
- List的filter、sort、map、forEach
- when 用法
- fun 函式用法
- if 表達式
- for 表達式
- 擴充函數(自定義函式)
var data: Int = 0 data = 1//正確 lateinit var: Int //稍後在初始化,但使用前必須先初始化,否則會閃退
private var data1 = "" //在set、get變更data1資料,請用field,否則會出問題 set(value) { field = "$value plus" println("set data $field") } get() = run { "AA-$field" } @Test fun test1() { println("into $data1") data1 = "Apple" println("into $data1") /*打印下方 into AA- set data Apple plus into AA-Apple plus */ }
val data: String = “123” data = “123434”//錯誤,val不可set private val data get() = run { println("is data O") "123" } @Test fun test1() { println("into $data") //打印 /*is data O into 123*/ }
var array:Array = arrayOf('1','2','3','4','5')//建立 //array.forEach遍歷所有array array.forEach { println("$it") }//此時打印出1 2 3 4 5 array = array.plus('6')//新增 array.forEach { println("$it") }//此時打印出1 2 3 4 5 6 array.reverse()//資料翻轉 array.forEach { println("$it") }//此時打印出6 5 4 3 2 1 //遍歷的另一種方法,此方法可以知道index,也可以知道value for((index,value) in array.withIndex()) { println("$index -> $value") }
fun onArrayListChange() { //MutableList是可讀可寫的List,底層其實是Java的ArrayList //List則是可讀不可寫 //建立ArrayList //var arrayList: ArrayList = arrayListOf() //建立MutableListOf var arrayList: MutableList = arrayListOf() arrayList.add("123")//新增123 arrayList.add("234")//新增234 arrayList.add(0,"aaa")//在list index = 0 位置新增aaa println("AA -> $arrayList")//AA -> [aaa, 123, 234] arrayList.removeAt(0)//刪除位置index = 0的資料 println("BB -> $arrayList")//BB -> [123, 234] arrayList.clear() println("CC -> $arrayList")//CC -> [] val list1 = listOf("123", "234") val list[0] = "233"//錯誤,List不能寫只能讀 val list2 = List(2) { when(it) { 0 -> { 10 } 1 -> { 15 } else -> { -1 } } } println("${list2[0]}, ${list2[1]}") //打印出10, 15 }
val list = listOf("cat", "dog", "rabbit") .filter { it.endsWith("t") } println("list $list")//list [cat, rabbit] val list2 = listOf("dog", "cat", "rabbit") .sortedBy { it } println("list2 $list2")//list2 [cat, dog, rabbit] val list3 = listOf("dog", "cat", "rabbit") .sortedByDescending { it } println("list3 $list3")//list3 [rabbit, dog, cat] val list4 = listOf("cat", "dog", "rabbit") .map { //遍歷,並把所有換成大寫 it.uppercase() } println("list4 $list4")//list4 [CAT, DOG, RABBIT] val list5 = listOf("cat", "dog", "rabbit") list5.forEach { //遍歷,並打印,map才能針對資料直接變化,forEach並不行 println(it) /* cat dog rabbit */ } println("list5 $list5")//list5 [cat, dog, rabbit]
//第一種 val string = "123" when(string) { "123", "1233" -> { } else -> { } } //第二種 val string = "123" val string1 = "234" when { string == "123" && string1 == "234" -> { } else -> { } } //第三種 val data: Int? = 100 when(data) { is Int -> { } in 0..100 -> { } }
//第一種 fun sum(a: Int, b: Int): Int { return a+b } println("${sum(1,2)}")//打印3 //第二種 fun sum(a: Int, b: Int) = a + b println("${sum(1,2)}")//打印3 //第三種 fun sum(a: Int = 5, b: Int) = a + b println("${sum(b=2)}")//打印7 //第四種 var sum = {arg1: Int, arg2: Int -> arg1 + arg2 } println("${sum(100,10)}")//打印110 //第五種(進階用法) fun calculationFun():() -> Unit { var data1 = 10 var data2 = 20 return { data1-=1 data2+=2 println("data1 = $data1, data2 = $data2") } } val calculationFun1 = calculationFun() calculationFun1() //打印data1 = 9, data2 = 22 calculationFun1() //打印data1 = 8, data2 = 24
//如果string == "123", result = 0 //如果string == "234", result = 1 //如果其他的話, result = 2 val result = if(string == "123") { 0 } else if(string == "234") { 1 } else { 2 }
val items = listOf("data1", "data2", "data3") //此方式,可以直接取到該index裡面的值 for (item in items) { println("item = ${item}") } //此方法,可以直接取得當前index for (index in items.indices) { println("item = ${items[index]}") } //如果重複的話,也可以用下方 repeat(7) { index -> println("index = $index") }
class TestClass { private val addPrice = 100 infix fun addPrice(value: Int): Int { return value+addPrice } } val testClass = TestClass() val result = testClass addPrice 1 println("result = ${result}")//打印出101
上面皆是版本ext.kotlin_version = “1.5.0″測試的
更多相關可以參考這裡
相關文章
Android Kotlin 基本語法2 | Android Kotlin 基本語法3 |
1. 操作符重載 2. 資料區間用法 3. map使用方法 4. 內部靜態變數 5. 靜態變數 6. 當資料如果是?型態宣告 7. 資料使用!!,強制將Int?轉Int 8. data class用法 9. 強制轉型 10. run、with、apply、also用法 | 1. class多建構式 2. 內部class用法 3. interface 4. enum class 用法 5. sealed class 用法 6. open 用法 |
Android Kotlin 基本語法4 | Android Kotlin Classes and Objects-1 |
1. 為基礎類型新增函式 2. Abstract技巧使用 3. throw使用方法 4. 利用let特性處理資料型態? 5. 快速初始化Array 6. 快速將兩個資料交換 7. 自定義待處理的fun 8. 幫loop設定標籤 | 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. 將舊方法棄用 |
歡迎訂閱唷!
廣告