当前位置: 首页 > news >正文

衡水做阿里巴巴网站安徽六安金寨县

衡水做阿里巴巴网站,安徽六安金寨县,西安制作标书的公司,河北省唐山市建设规划局的网站Kotlin Lambda 在探索Kotlin Lambda之前,我们先回顾下Java中的Lambda表达式,Java 的 Lambda 表达式是 Java 8 引入的一项强大的功能,它使得函数式编程风格的代码更加简洁和易于理解。Lambda 表达式允许你以一种更简洁的方式表示实现接口&…

Kotlin Lambda

在探索Kotlin Lambda之前,我们先回顾下Java中的Lambda表达式,Java 的 Lambda 表达式是 Java 8 引入的一项强大的功能,它使得函数式编程风格的代码更加简洁和易于理解。Lambda 表达式允许你以一种更简洁的方式表示实现接口(尤其是函数式接口)的方法。它的主要作用是简化代码、减少冗长的匿名类实现,并使得代码更加灵活。
先看一段代码:

Runnable runnable = new Runnable() {@Overridepublic void run() {System.out.println("Hello Java");}
};

等效为:

Runnable runnable = () -> System.out.println("Hello Java");

带参数的和带返回值的其实是类似的,只要满足函数式接口都可以使用lambda表达式简化代码,这里就不做过多的介绍了。

Kotlin高阶函数

在了解Kotlin Lambda之前,我们要先了解Kotlin的高阶函数,高阶函数是指满足以下条件之一的函数:

  • 将函数作为参数传递。
  • 返回一个函数作为结果。
//函数作为参数
fun a(b: () -> Int) {b.invoke()
}
//函数作为返回结果
fun c(x: Int): (Int) -> Int {return { number -> number * x }
}fun main() {val multiplier = c(2)println(multiplier(2))
}

函数引用

在Kotlin中可以使用::对函数进行引用,并且还可以直接引用类似于集合中易经定义的函数,可以简化代码

//函数引用
fun d(b: (Int) -> Int): Int {return b.invoke(1)
}fun e(parma: Int): Int {return parma
}val f = ::e
val h = d(::e)

注意:::对函数进行引用之后,实则是创建了一个对象,并不是函数本身,定义的函数无法调用invoke方法,而函数对象可以:

val m = f(1)// 等同于f.invoke(1)
val l = (::e)(1) //等同于(::e).invoke(1)

匿名函数

匿名函数(也称为lambda 函数)是一种没有名称的函数。它们通常用于作为函数参数传递给其他函数,或者简化某些操作。Kotlin 提供了两种主要的匿名函数写法:Lambda 表达式和匿名函数。

  • Lambda表达式是一种简洁的匿名函数写法,常用于高阶函数中。
val lambda = { parma: Int -> { parma * parma } }
  • 匿名函数和 Lambda 表达式非常相似,但它们有一些不同的地方,特别是在返回类型和参数类型推断方面。匿名函数可以显式地指定返回类型和参数类型,且它允许在函数体内使用 return 语句来返回结果。
val a = fun(parma: Int): String {return parma.toString()
}

注意:lambda不能使用return进行返回操作,而匿名函数可以
在这里插入图片描述

Kotlin Lambda

在Java中,我们设置函数式接口类型的对象通常使用匿名内部类或者lambda表达式:

private OnClickListener mListener;interface OnClickListener {void onClick(int value);
}public  void setOnClickListener(OnClickListener listener) {this.mListener = listener;
}//匿名内部类
setOnClickListener(new OnClickListener() {@Overridepublic void onClick(int value) {}
});
//lambda
setOnClickListener(value -> {});

在Kotlin中lambda表达式变得更加简洁和方便

interface Listener {fun onClick(value: Int)
}fun setListener(listener: Listener) {}
//kotlin可以将setListener方法参数传对象改为高阶函数
fun setListener2(onClick: (Int) -> Unit) {}fun test() {//参数接收对象setListener(object : Listener {override fun onClick(value: Int) {println(value)}})//接收一个匿名函数setListener2(fun(value: Int): Unit {println(value)})//匿名函数可以替换为Lambda表达式setListener2({ value -> println(value) })//若接受的函数是参数列表的最后一个参数,可以写在括号外面setListener2(){ value -> println(value) }//若匿名函数只有一个参数可以省略,kotlin会用it代替它setListener2 { println(it) }
}

最终我们看到了Kotlin Lambda表达式较为简洁的写法。kotlin lambda表达式在声明时已经指定参数类型,因此参数类型可以不写,而返回值永远取最后一行代码的执行结果,因此也不需要指定返回值。Kotlin 匿名函数和Lambda的本质是函数类型的对象,和::是同样的效果,而Java 8中的Lambda只是一种简洁的写法。

http://www.yayakq.cn/news/801524/

相关文章:

  • 网站建设 后端开发软件搜索引擎优化是什么
  • 一流学科建设专题网站深圳市浩天建设网站
  • 淘宝客网站制作网站更换服务器 seo
  • 三角网站建设企业免费网站推广公司
  • 免费建立企业网站大连旅游必去景点
  • 中山做网站哪家好上海做网站比较好的
  • 北京建设企业协会网站免费行情软件app网站大全下载免费入口
  • 建网站到底需要多少钱如何免费建企业网站
  • 建设银行网站登录不上做一个小说网站需要多少钱
  • 个人官方网站怎么建设自己做网站前期困难吗
  • 网站建设作业多少钱广州网站开发
  • 网站网页制作企自己做图片的网站吗
  • 洛阳建站洛阳市网站建设wordpress企业开发
  • 个人网站建设方案书备案网页设计心得体会600字
  • 西安网站建设哪家好一些快速seo整站优化排行
  • 描述电子商务网站建设网站如何paypal支付方式
  • 北京网站设计培训学校东莞58同城网
  • 怎样做网站优化 关键词青岛企业网站开发
  • 一级a做爰片啪网站网站建设需要什么插件
  • 如何查看网站是谁建设的昆山有名的网站建设公司
  • 谷歌网站怎么打不开中关村哪里可以做网站
  • 如何免费申请网站清新wordpress主题
  • 淄博网站建设优化上汽建设网站 莆田
  • 水贝网站建设ludou wordpress
  • 网站建设公司itcask电商网站建设任务分解结构
  • 网站开发外包售后维护合同搜索优化排名
  • 中国设计网站排行榜怎么修改wordpress 字体
  • 边境网站建设方案禹城建设局网站
  • 沈阳建网站公司许昌长葛网站建设制作设计
  • 那个网站做图片好看的网站建设目标与期望