Kotlin的Lambda式,大多数人都学过毛皮

时间:2020-08-30 11:44 点击:150

不好,也行。在 Java 里是不允许把方式做为参数传递的,可是大家有一个有悠久的历史的随机应变计划方案:接口。我们可以根据接口的方法来把方式包裝起來:

假如 Lambda 是函数的最后一个主要参数,你能把 Lambda 写在括弧的外边:

再聊一下 Java 的 Lambda。针对 Kotlin 的 Lambda,有很多从 Java 回来的人表明「功能强大功能强大但不会写」。它是一件很有趣的事儿:你都不会写,那么你是为什么会用的呢?Java 从 8 刚开始引进了对 Lambda 的适用,针对单抽象方法的接口——通称 SAM 接口,Single Abstract Method 接口——针对这类接口,Java 8 容许你用 Lambda 关系式来建立匿名类对象,但它实质上還是在建立一个匿名类对象,仅仅一种简单化写法罢了,因此 Java 的 Lambda 只靠编码全自动补齐就大部分能写了。而 Kotlin 里的 Lambda 和 Java 实质上便是不一样的,由于 Kotlin 的 Lambda 是切切实实的函数种类的对象,作用更强,写法大量更灵便,因此很多人从 Java 回来就有点儿搞搞不懂了。

这……是怎么回事?

实际上即使用,还可以不写,由于 Kotlin 的 Lambda 针对省去的唯一主要参数有默认设置的姓名:it:

在 Kotlin 里,一个函数名的左侧再加双灶具,它也不表明这一函数自身了,而表明一个对象,也就是说一个偏向对象的引入,但,这一对象并不是函数自身,只是一个和这一函数具备同样作用的对象。

扔物线(朱凯),我国唯一获得 Google 官网认证的 Android 开发设计权威专家和 Kotlin 开发设计权威专家(GDE),前 Flipboard Android 技术工程师,Android 高級技术性分享平台 HenCoder (hencoder.com) 创作者 和 Kotlin 自学网站码上新学期开学 (kaixue.io) 创始人。

int a { return b ( 1 ); } a ; int a ( int param ) { return b ( param ); } a ( 1 ); // 內部启用 b(1) a ( 2 ); // 內部启用 b(2) int a (??? method ) { return method ( 1 ); } a ( method1 ); a ( method2 ); public interface Wrapper { int method ( int param ); } int a ( Wrapper wrapper ) { return wrapper . method ( 1 ); } a ( wrapper1 ); a ( wrapper2 ); // 注:它是简单化后的编码,并不是 View.java 类的源代码 public class View { OnClickListener mOnClickListener ; ... public void onTouchEvent ( MotionEvent e ) { ... mOnClickListener . onClick ( this ); ... } } public interface OnClickListener { void onClick ( View v ); } OnClickListener listener1 = new OnClickListener { @Override void onClick ( View v ) { doSomething ; } }; view . setOnClickListener ( listener1 ); fun a ( funParam : Fun ): String { return funParam ( 1 ); } fun b ( param : Int ): String { return param . toString } a ( b ) fun a ( funParam : ( Int ) -
当前网址:http://www.tpeqvut.tw/nanshisirenyingyuangaoqingmianfeiziyuanzhan/150222.html
tag:对象,接口,写法,不会写,匿名类,函数,不行,引入,简化,中

发表评论 (150人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
昵称: 验证码:点击我更换图片
最新评论

Powered by 男士私人影院高清免费 @2014