首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

kotlin小知识系列1-dsl和invoke约定

kotlin小知识系列1-dsl和invoke约定

kotlin小知识系列是连载文,会不定期的进行更新

invoke约定

kotlin中,为了更加方便的支持dsl,提供了一个特殊的函数,invoke约定函数。看下代码说明它的作用。

通过代码可以看出invoke约定函数,就是为对象提供了一个直接调用方法的途径。当然了,除了上述类似dsl的调用途径外,invoke本身也是个普通方法。也可以对其进行参数设置。例如:

两个例子可是说是比较常用的例子了~

dsl领域专用语言

kotlin本身语言的特性,天生支持dsl。主要用涉及扩展函数、lambda、中缀调用、invoke 约定和函数小括号省略等几个特性。 android的编译环境gradle就是典型的dsl的应用。只是目前gradle使用的是grovvy语言,下面我用kotlin实现一个说明的例子。

下面,我着重分析下几个要点

kotlin的lamada表达式

Dependencies 的约定invoke函数的参数是一个带有接收者的lambda表达式,同时由于invoke函数唯一参数是个lambda表达式,可以省略小括号。 所谓带有接收者的lambda表达式,我觉得更像一个闭包环境,而环境的context就是lambda的调用者,如果没有显示的指明调用者的话,就是当前的对象this了。

再看一个显示指明lambda调用者的情况

代码很简单,就不仔细说明了~~

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180821G1FNMR00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券