美文网首页
8. Kotlin---函数与Lambda表达式

8. Kotlin---函数与Lambda表达式

作者: 努力生活的西鱼 | 来源:发表于2019-11-07 10:36 被阅读0次
Kotlin
函数

Kotlin中的函数使用fun关键字声明。

const val str1: String = "10";
const val str2: String = "20";

fun main() {

    val number = sum(str1.toInt(), str2.toInt()); // toInt(): 类型转换为Int
    println("number is $number"); // number is 30

    println(sum2(100, 300)); // 400

}

// 定义函数
fun sum(arg1: Int, arg2: Int): Int {
    return arg1 + arg2;
}

// 匿名函数
val sum2 = fun(arg1: Int, arg2: Int): Int {
    return arg1 + arg2;
}

// 返回无意义
fun sum03(): Unit {
    println("无意义!!!");
}

// 单表达式函数
fun double(x: Int): Int = x * 2;
Lambda介绍

Lambda表达式与匿名函数是函数字面值,即未声明的函数,但立即作为表达式传递。

Lambda表达式的本质其实是匿名函数,因为在其底层实现中还是通过匿名函数来实现的。

Lambda作为函数式编程的基础,其语法也是相当简单的。

max(strings,{a,b -> a.length < b.length})

函数max是一个高阶函数,接受一个函数作为第二个参数。其第二个参数是一个表达式,它本身是一个函数,即函数字面值。

Lambda表达式语法
val sum: (Int, Int) -> Int = { x: Int, y: Int -> x + y }

Lambda表达式总是括在花括号中,完整语法形式的参数声明放在花括号内,并有可选的类型标注,函数体跟在一个->符号之后。如果推断出的该Lambda的返回类型不是Unit,那么该Lambda主体中的最后一个表达式会视为返回值。

将Lambda表达式传给最后一个参数

Kotlin中有一个约定:如果函数的最后一个参数是函数,那么作为相应参数传入的Lambda表达式可以放在圆括号之外

val product = items.fold(1) { acc, e -> acc * e }
fun max(strings:String) {a:Int,b:Int -> a.length < b.length}

这种语法也称为拖尾Lambda表达式

it
  • it是在当一个高阶函数中Lambda表达式的参数只有一个的时候可以使用it来使用此参数。it可表示为单个参数的隐式名称,是Kotlin语言约定的。
val array:Array<Int> = arrayOf(1,2,3,4,5,6);

fun main() {
    println(array.filter {i: Int -> i < 3 }); // [1, 2]
    println(array.filter { it <= 3 }); // [1, 2, 3]
    println(array.filter { it < 5 }.component1()); // 1, component1: 从集合中返回第一个element
}

注意:

println(array.filter {(i: Int) -> i < 3 }); // (i: Int):加括号是错误的

相关文章

  • 8. Kotlin---函数与Lambda表达式

    函数 Kotlin中的函数使用fun关键字声明。 Lambda介绍 Lambda表达式与匿名函数是函数字面值,即未...

  • Lambda表达式

    Lambda表达式与函数式接口紧密相关,函数式接口介绍 Lambda表达式的基本语法 Java Lambda表达式...

  • C++中的Lambda表达式

    1.Lambda函数与表达式 C++11提供了对匿名函数的支持,称为Lambda函数(也叫Lambda表达式)。L...

  • lambda表达式

    什么是lambda表达式 lambda表达式的本质 lambda表达式是一种匿名函数,匿名函数是函数定义不绑定到任...

  • lambda表达式与Kotlin高阶函数

    lambda表达式与Kotlin高阶函数 概念 lambda表达式,或者简称为lambda,本质上就是可以传递给其...

  • 第二章 Lambda表达式

    引入Lambda表达式后: 编写Lambda表达式的不同形式: Lambda表达式本身的类型:函数接口 函数接口 ...

  • C++ lambda表达式与函数对象

    C++ lambda表达式与函数对象 lambda表达式是C++11中引入的一项新技术,利用lambda表达式可以...

  • Python基础——匿名函数+作用域

    一、匿名函数:lambda 函数名 = lambda 参数: 表达式 1、有名函数 2、匿名函数lambda [ ...

  • python第21课练习—lambda表达式

    1、请使用lambda表达式将下边函数转化为匿名函数? lambda表达式lambda表达式,通常是在需要一个函数...

  • JDK1.8新增特性参考

    Lambda表达式 Stream函数式操作流元素集合 接口新增:默认方法与静态方法 方法引用,与Lambda表达式...

网友评论

      本文标题:8. Kotlin---函数与Lambda表达式

      本文链接:https://www.haomeiwen.com/subject/zeeubctx.html