alltolove 发表于 2017-11-16 09:21:56

kotlin基础之函数与lambda表达式

        在kotlin里函数跟lambda是重中之重,而且也非常难学,不过像我这种笨人学点皮毛还是可以的,希望大家能见一叶而知秋,像佛祖一样拈花一笑,就可以了解大千世界。我只作为一个介绍者。
       
        fun main(args: Array<String>) {

    println(readBook("《Kotlin 实战》"))

}
fun readBook(str:String):String{
    return "我读了 $str 这本书"
}
        这就是kotlin的函数写法以fun关键字开头,然后是函数名,圆括号里是参数,在冒号后面是返回值类型,如果没有返回值可以不写。调用时候跟其他语言一样。

        函数也可以有动态类型加载,如下:
fun main(args: Array<String>) {

    println(readBook("《Kotlin 实战》"))
    println(readBook(1))

}
fun <T>readBook(str:T):String{
    return "我读了 $str 这本书"
}
        这就会让你编程时非常方便,想传什么类型就传什么类型。输出结果为:
我读了 《Kotlin 实战》 这本书
我读了 1 这本书
        参数还可以设置一个数组类型,如:fun main(args: Array<String>) {

    println(readBook("《Kotlin 实战》","《java大全》","《C++大全》"))

}
fun readBook(vararg str:String):String{
    return "我读了 ${str.joinToString ()} 这些本书"
}
        在变量前加个vararg关键字就可以把类型变成个数组,在返回时我又把这个数组转换成了字符串。输出结果为:
我读了 《Kotlin 实战》, 《java大全》, 《C++大全》 这些本书

        然后说说lambda表达式,其实就是函数的一个简写方法,例如:fun main(args: Array<String>) {

    var readBook={str:String->"我读了${str}这本书"}

    println(readBook("《零基础入门学习Python》小甲鱼 著"))

}
        效果跟函数一样,但只用了一行代码,而且运行速度要比函数快,非常的好用。以后我们尽量用这种方式,不要用函数。

        还可以用lambda表达式作为函数参数,如下:
inline fun modifyString(str:String,operation:(String)->String):String{
    return operation(str)
}

fun main(args: Array<String>) {

    println(modifyString("hello",{it.toUpperCase()}))

}
输出结果为:HELLO
前面的inline关键字是为了让函数运行起来更效率,没有也可以。这里传进去的it就代表str。

        还有这种方法:
fun main(args: Array<String>) {
   
    fun permit(vararg ages:Int):Boolean{
      return ages.any{age->age>10}
    }
    println(permit(1,11,2))
}
输出结果为:true
        any方法是判断ages数组里的所有值,如果有一个大于10的话就返回真,否则返回假。lambda在列表跟hashmap里应用比较广泛,我们以后再说。先简单介绍个字符串过滤的方法:fun main(args: Array<String>) {

    var str1="I love FishC 3"

    var fil=str1.filter { it.isDigit() }
    print(fil)
}
输出结果:3
就是把字符串里是数字的部分都过滤出来,很方便吧?{:5_91:}

chun888 发表于 2019-3-16 16:04:21

我要把你这27篇看完他{:10_256:}
页: [1]
查看完整版本: kotlin基础之函数与lambda表达式