





















val arr = arrayOf("1",2,3,4) // 数组
val list = listOf("Apple", "Banana", "Orange", "Pear", "Grape") // ArrayList<String> 类型
for(fruit in list){
println(fruit)
}
val mList = mutableListOf("Apple", "Banana", "Orange", "Pear", "Grape") // ArrayList<String> 类型
mList.add("Watermelon")
for(fruit in mList){
println(fruit)
}
val map1 = HashMap<String, Int>()
val map2 = HashMap<String, Int>()
for((index, fruit) in list.withIndex()){
map1.put(fruit, index) // put 函数
map2[fruit] = index // 直接赋值
}
val number = map1["Apple"] // 读取数据
val map = mapOf("Apple" to 1, "Banana" to 2, "Orange" to 3, "Pear" to 4, "Grape" to 5)
for((fruit, number) in map){
println("$fruit $number")
}
【暂不学习】
{参数1: 类型, 参数2: 类型 -> 函数体}
-> 前-> 后val 变量名 = { 函数体 }val 变量名 : (类型,类型) -> 返回值类型 = {参数1,参数2 -> 函数体 }val 变量名 = { 参数1 : 类型,参数2 : 类型 -> 函数体 }
fun func(a : Int, 参数名 : (参数1 : 类型,参数2 : 类型 ) -> 表达式返回类型) {}// 1. 简单无参数函数可以直接通过 lambda 省略函数
fun printf() {println("无参数函数")}
val printfLambda = {println("无参数函数")}
printfLambda()
// 2. 有参数情况
fun add1(a : Int, b : Int) : Int {
return a + b
}
fun add2(a : Int, b : Int) = a + b
val add3 : (Int, Int) -> Int = {a, b -> a + b}
val add4 = {a : Int, b : Int -> a + b}
println("${add1(1,2)}, ${add2(1,2)}, ${add3(1,2)}, ${add4(1,2)}")
// 3. lambda 表达式作为函数中的参数
fun sum(num1 : Int, num2 : Int) = num1 + num2
add1(10, sum(3,5)) // 函数作为函数的参数
fun add5(a : Int, b : (num1 : Int, num2 : Int) -> Int) = a + b.invoke(3, 5) // 函数的参数设定为 lambda 表达式
add5(10, { num1: Int, num2: Int -> num1 + num2 }) // lambda 表达式作为函数参数
val list = listOf("Apple", "Banana", "Orange", "Pear", "Grape", "Watermelon")
var maxLengthFruit = list.maxBy({fruit : String -> fruit.length})
// lambda 表达式是函数的最后一个参数时,可以把lambda表达式,即 {函数体} 移动到 () 后面
// maxBy 函数只有lambda表达式作为参数, 省略 ()
// 自动推导省略 string
maxLengthFruit = list.maxBy{fruit -> fruit.length}
// lambda 表达式只有一个参数 (这里只有 fruit) 时,可以用 it 关键字代替
maxLengthFruit = list.maxBy { it.length }
it 不是关键字it 来使用此参数val newList = list.filter { it.length <=5 }.map{it.uppercase()} // it 指代每个字符串
newList.forEach { println(it) }
// f 为一个传入 int 返回 boolean 的函数,其中()表示参数
fun func(n : Int, f : (Int) -> Boolean) : Int{
// 调用 f(n),即将 n 带入到 f 函数中的 it 中,满足条件则返回 n
return if (f(n)){n} else 0
}
println(func(10,{it > 5}))
val map = mapOf("Apple" to 1, "Banana" to 2, "Orange" to 3, "Pear" to 4, "Grape" to 5)
map.forEach { fruit, _ -> println(fruit) }
fun add3(num1: Int, num2: Int) = num1 + num2
val add4 = fun(num1: Int, num2: Int) = num1 + num2 // 匿名函数
【匿名函数的意义】
val list = listOf("Apple", "Banana", "Orange", "Pear", "Grape")
val builder = StringBuilder()
builder.append("Start eating. \n")
for(fruit in list){
builder.append(fruit).append("\n")
}
builder.append("Ate all.")
val result1 = builder.toString()
println(result1)
val result2 = with(StringBuilder()){
append("Start eating. \n")
for(fruit in list){
append(fruit).append("\n")
}
append("Ate all.")
toString()
}
println(result2)
val result3 = StringBuilder().run{ // 返回某个值
append("Start eating. \n")
for(fruit in list){
append(fruit).append("\n")
}
append("Ate all.")
toString()
}
println(result3)
val result4 = StringBuilder().apply { // 无法返回值,而是只能返回自身
append("Start eating. \n")
for(fruit in list){
append(fruit).append("\n")
}
append("Ate all.")
}
println(result4.toString())
fun main() {
util.doAction2() // 调用静态方法
val u = util() // 需要具体对象
u.doAction1()
val value = util().run { doAction1() } // 简化,返回值(这里为 Unit )
val obj = util().apply { doAction1() } // 简化,返回对象
}
class util{
fun doAction1() {
println("doAction1")
}
companion object { // 创建伴生类
@JvmStatic // 加入注解后成为真正的静态方法,不加语法也能够正常使用
fun doAction2() { // 定义在伴生类的方法
println("doAction2")
}
}
}
Helper.kt 文件,定义顶层方法 doSomething()
doSomething()HelperKt.doSomething() 调用此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。