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

北京 网站建设广东知名网站建设

北京 网站建设,广东知名网站建设,网站的弹窗是用什么软件做的,长治网站制作一般多少钱文章目录背景Kotlin中使用可变参数对Kotlin可变参数反编译资料背景 一般在项目开发中,我们经常会在关键节点上埋点,而且埋点中会增加一些额外参数,这些参数通常是成对出现且参数个数是不固定的。如下: //定义事件EVENT_ID const…

文章目录

      • 背景
      • Kotlin中使用可变参数
        • 对Kotlin可变参数反编译
      • 资料

背景

一般在项目开发中,我们经常会在关键节点上埋点,而且埋点中会增加一些额外参数,这些参数通常是成对出现参数个数是不固定的。如下:

//定义事件EVENT_ID
const val EVENT_ID = "event_xmkp"//注意:这里传入的是vararg可变参数
fun String.log(vararg args: String) {if (args.size % 2 > 0) {throw RuntimeException("传入的参数必须是偶数")}if (args.isEmpty()) {buryPoint(this)} else {//注意这里:可变参数在作为数组传递时需要使用伸展(spread)操作符(在数组前面加 *)buryPoint(this, *args)}}private fun buryPoint(eventId: String, vararg args: String) {if (args.isNotEmpty()) {Log.e(TAG, "buryPoint: $eventId, args: ${args.toList()}")} else {Log.e(TAG, "buryPoint: $eventId")}
}

调用方式如下:

EVENT_ID.log()
EVENT_ID.log("name", "小马快跑")
EVENT_ID.log("name", "小马快跑", "city", "北京")

示例中可变参数可以是0个、2个、4个,执行结果:

2022-11-22 19:00:54 E/TTT: eventID: event_xmkp
2022-11-22 19:00:54 E/TTT: eventID: event_xmkp, args: [name, 小马快跑]
2022-11-22 19:00:54 E/TTT: eventID: event_xmkp, args: [name, 小马快跑, city, 北京]

可以看到通过定义可变参数,在调用方可以灵活地传入0个多个参数,下面就分析下Kotlin方法中的可变参数。

注意:可变参数在作为数组传递时需要使用伸展操作符(在数组前面加 *),如果去掉 *号,编译器会报如下错:

请添加图片描述

Kotlin中使用可变参数

Java中可变参数规则:

  • 使用…表示可变参数
  • 可变参数只能在参数列表的最后
  • 可变参数在方法体中最终是以数组的形式访问

Kotlin中可变参数规则:

  • 不同于Java,在Kotlin中如果 vararg 可变参数不是列表中的最后一个参数, 可以使用具名参数语法传递其后的参数的值。
  • Java一样,在函数内,可以以数组的形式使用这个可变参数的形参变量,而如果需要传递可变参数,需要在前面加上伸展(spread)操作符(在数组前面加 *),第一节已给出示例。

对Kotlin可变参数反编译

对上一节中的String.log()代码反编译成Java代码:

//kt代码
fun String.log(vararg args: String) {if (args.size % 2 > 0) {throw RuntimeException("传入的参数必须是偶数")}if (args.isEmpty()) {buryPoint(this)} else {//注意这里:可变参数在作为数组传递时需要使用伸展(spread)操作符(在数组前面加 *)buryPoint(this, *args)}}

转换之后:

 // Java代码public final void log(@NotNull String $this$log, @NotNull String... args) {...if (args.length % 2 > 0) {throw (Throwable)(new RuntimeException("传入的参数必须是偶数"));} else {if (args.length == 0) {this.buryPoint($this$log);} else {this.buryPoint($this$log, (String[])Arrays.copyOf(args, args.length));}}}
  • Kotlinvararg args: String参数转换成Java的 @NotNull String... args
  • Kotlinspread伸展操作符*args转换成Java(String[])Arrays.copyOf(args, args.length),可见最终还是通过系统拷贝生成了数组。

资料

【1】https://www.kotlincn.net/docs/reference/functions.html


文章转载自:

http://ZQkBin63.nhgkm.cn
http://kongSfNW.nhgkm.cn
http://yuD5jZ5k.nhgkm.cn
http://m4JWvLC4.nhgkm.cn
http://IEeBmWXK.nhgkm.cn
http://wmz79hAm.nhgkm.cn
http://nZtwfuiP.nhgkm.cn
http://sDNNpDNk.nhgkm.cn
http://TCAemt8B.nhgkm.cn
http://ILnyrhyk.nhgkm.cn
http://pxYmYgE8.nhgkm.cn
http://3AUSXeHw.nhgkm.cn
http://x3UH4V4m.nhgkm.cn
http://d6uaudIL.nhgkm.cn
http://lLSu1i0i.nhgkm.cn
http://dSBGkKNT.nhgkm.cn
http://t94LaMI5.nhgkm.cn
http://N3e6jzKa.nhgkm.cn
http://Up9vrNFR.nhgkm.cn
http://sVFCbb73.nhgkm.cn
http://jIsmapX9.nhgkm.cn
http://6n9wckt2.nhgkm.cn
http://SdztcZ4D.nhgkm.cn
http://4ZekcBF8.nhgkm.cn
http://JFKW6zUg.nhgkm.cn
http://B3SkJdPR.nhgkm.cn
http://GBEjTsHE.nhgkm.cn
http://lpTz1ZCp.nhgkm.cn
http://kAPVao5T.nhgkm.cn
http://PcA0Qf6r.nhgkm.cn
http://www.dtcms.com/wzjs/637643.html

相关文章:

  • 企业的网站品牌推广临海商用高端网站设计新感觉建站
  • 怎么建设网站卖东西游戏音效设计师培训
  • 企业网站后台模版最牛的网站建设
  • 建筑网片施工中的用途网站seo怎样做
  • 网站管家网页顶部导航栏
  • 做网站文案.net wap网站模板
  • 龙华附近网站建设公司简述建设iis网站的基本过程
  • 成都工程建设项目网站天津企业展厅设计公司
  • 自己建设一个网站需要多少钱做门户网站最重要的是什么意思
  • 做直播网站宽带网站备案撤销
  • 一些做义工的旅游网站如何做阿里巴巴网站
  • 国外做的好的网站卫计局网站建设工作总结
  • 上杭网站设计公司注册城乡规划师报考时间2024
  • 单位门户网站购物网站设计思路
  • 买东西的网站做网站需要提供哪些信息
  • 专业网站制作推广服务重生做网站的小说
  • 如何搭建门户网站商业计划书范文
  • 网站访问统计方案wordpress评论随机
  • 微信公众号制作网站网站建设与管理就业
  • 免费微信微网站模板下载深圳做微信网站设计
  • 为什么网站建设要值班全国全屋定制品牌十大排名
  • 公司网站手工优化怎么做互联网行业推广员资格证明图片
  • 加强网站政务服务建设vscode制作个人网站
  • 做我韩国连续剧网站网站搜索引擎优化的方法
  • 用笔记本做网站服务器网页版梦幻西游手游官网
  • 军事网站大全军事网网站制作公司都还赚钱吗
  • 杭州做网站公司百度h5游戏
  • 网站模板超市网站开发页面怎么进
  • 建设网站和公告号的意义辽宁省造价工程信息网
  • 学校网站模板免费湛江seo网站推广