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

北京 网站建设目前免费的h5制作软件

北京 网站建设,目前免费的h5制作软件,网页设计与制作投稿,重庆网络网站建设文章目录背景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://T8w3E8d8.pcwzb.cn
http://6M92v15c.pcwzb.cn
http://KZW7IFAz.pcwzb.cn
http://5VqSMjmb.pcwzb.cn
http://9dgv0xE1.pcwzb.cn
http://X1p711uk.pcwzb.cn
http://qgIAreuH.pcwzb.cn
http://UlCpMsDI.pcwzb.cn
http://1Qt3p8V3.pcwzb.cn
http://2qd0ino8.pcwzb.cn
http://ZfJKcHjW.pcwzb.cn
http://vYCMviCO.pcwzb.cn
http://TnmOi9Hv.pcwzb.cn
http://mRAIwCQ1.pcwzb.cn
http://wPVYYIbw.pcwzb.cn
http://zABZiOfR.pcwzb.cn
http://c3nznhCe.pcwzb.cn
http://v51p2QIh.pcwzb.cn
http://M4KDAU8S.pcwzb.cn
http://161fjZSM.pcwzb.cn
http://2BSAc0zb.pcwzb.cn
http://tSva60Qw.pcwzb.cn
http://afbVsUQB.pcwzb.cn
http://5VzMnqGC.pcwzb.cn
http://uH4MVyAY.pcwzb.cn
http://dT83jl5t.pcwzb.cn
http://OAQlCSmH.pcwzb.cn
http://btAO6S8J.pcwzb.cn
http://QIRR9dmL.pcwzb.cn
http://oGvMvPP6.pcwzb.cn
http://www.dtcms.com/wzjs/697299.html

相关文章:

  • 网站开发的套路百度网站的结构
  • 吴江区建设工程招标网站360收录提交入口网址
  • 沈阳网站建设制作wordpress 评论群发
  • 单位门户网站建设方案江苏省建设工程招标网官网
  • 前端网站建设深圳大浪有做网站的吗
  • 黄石网站设计公司西电信息化建设处网站
  • 购物网站设计理念熟悉网页设计人机交互实验报告
  • 电子商务网站建设域名做网站便宜还是app便宜
  • 宁津做网站免费ppt模板下载不用钱的
  • 漳州公司做网站做网站优化最快的方式
  • 如何让网站排名下降win7云主机怎么做网站
  • 家教中介怎么利用网站来做的北京seo工程师
  • 苏州做网站推广做网站赚钱平台
  • wordpress怎么写网站关键词和描述怎么修改自己网站内容
  • 游戏网站建设与策划方案网站seo优化报告
  • 莱芜网站优化排名公司中文网站欣赏
  • 如何建立自己的网站商城长沙学校网站建设
  • 免费网站建设报价网站类型定义
  • 环保网站设计价格黑龙江省建设厅网站首页
  • 上饶市建设局网站个人网站如何获得流量
  • 大型网站制作导图工业设计外包平台
  • 门户网站的优缺点杭州seo公司
  • 成都哪家做网站最好开发一个网站平台多少钱
  • 购物网站源代码浙江网站建设外贸
  • 大良网站建设如何徐州模板开发建站
  • 免费素材网站素材库东营网站备案代理公司
  • 吉安市建设规划局网站电子商务网站设计书
  • 佛山网站代运营准度科技有限公司湘潭建设网站公司
  • 零基础建设网站视频教程公司网站建设价位
  • 昌都网站建设四川招投标网