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

Kotlin 基础教程二

constructor 构造器一般情况下可以简化为主构造器 即: class A constructor(参数) : 父类 (参数) 也可以在构造器上直接声明属性constructor ( var name) 这样可以全局访问

init { }  将和成员变量一起初始化

susped 挂起

data class 可以简化一些bean类 比如get / set ,自动生成copy 函数 var data2 =  data.copy  data class 会简化为自动将构造函数填充至具体数值 如果想改变顺序 则需要重写 component 函数

== java中是比较地址  kotlin 则是比较equals 比较内存地址 用 ===

?: 三目运算符  data.message  ? : "data"   ?:后面为第一个语句的表达式的结果  等同于java的 ? a : b

?. 安全调用符号 防止空指针

when 操作符  类似于java switch ,不过when 可以有返回值 比如 var code : Int when(data ) = {xxx -> 0}

when(data){

1 -> xx

2,3 -> xxx,如果返回值一样 用,分割 等同于 case : case : break;

}

ArrayList 访问具体数据与数组相同 list[position]

operator 加上这个操作符可以通过操作符进行调用

forEach  遍历 {值 : List ->} 可以简化为 {it , it=值}

filter {传入表达式 过滤出一个新的集合} var list2 = list.filter{it.code = 200}

in 区间 for(i in 0..99)

until 函数(加上了infix关键字)不包含右边界    比如 for(i in 0 until data.length)

indices 等同于length size 

fun 修饰函数可以在函数中嵌套使用 可以调用外部对象 但是每次调用会生成一个函数对象

private set 私有化set 方法

@get 获取名称

@JvmOverloads 生成重写方法

扩展 可以给成员属性加上指定函数 比如 需传入Float 可以写成 fun Float.getValue(){this == Float}然后可以1f.getValue  如果和之前定义的函数名和参数相同 一般会执行之前的函数, 静态解析

@ViewGroup.firstView : View get() = getChildAt(0)

inline 内联函数将内部的代码块直接引用 copy 过来到调用的地方,减少调用栈 

:: 传入方法 函数, fun setClick(listener : (View) -> Unit)    --- v.setOnClick(::Click)

fun click(view : View)xx  or {}  函数类型即接口

reified 指定泛型

by ------by lazy 只加载一次 ,调用时加载  by后面跟一个对象类型 var 需要重写 operator get set val 只需要get

apply  also   repeah    with   run 作用域函数

apply 初始化的操作 当前对象为this 返回当前对象 this

let 初始化,当前对象为it return @let it 做判断时候使用合适

also 等同于let also 返回调用对象

run 等同于let 当前对象用this findViewById<XX>(R.id.xx).run{ 初始化参数}

返回自身  apply also  返回this apply 不返回自身的  run  let  

http://www.lryc.cn/news/131095.html

相关文章:

  • K8S deployment挂载
  • 类之间的比较
  • 设计模式之备忘录模式(Memento)的C++实现
  • 学习笔记230804---restful风格的接口,delete的传参方式问题
  • STM32使用IIC通信的引脚配置问题
  • 题解 | #K.First Last# 2023牛客暑期多校10
  • Python 程序设计入门(025)—— 使用 os 模块操作文件与目录
  • excel逻辑函数篇1
  • 前端基础(Vue的模块化开发)
  • SystemVerilog interface使用说明
  • 机器人制作开源方案 | 送餐机器人
  • Gradio部署应用到服务器不能正常访问
  • 数据暴涨时代,该如何数据治理?_光点科技
  • 2021年03月 C/C++(三级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • GPT-5出世?OpenAI GPT-5商标已注册
  • 优雅的使用 Dockerfile 定制镜像
  • limit的用法mysql
  • clickhouse Checksum doesn‘t match: 问题修复
  • 企业如何开展个人信息安全影响评估(PIA)二
  • android TextView 超出长度使用省略号
  • c++ | 字节转换 | 字长 | 机器位数
  • 7-4 交换最小值和最大值
  • 解决Pycharm的Settings中Project不见了也无法选择Python Interpreter的方法
  • AWS EKS 集群自动扩容 Cluster Autoscaler
  • excel中有哪些通配符、excel配置问题,数学函数篇1之sum系列
  • 工控行业需要熟悉的工业级通信协议
  • 力扣题解(1030. 距离顺序排列矩阵单元格),带注释
  • 每天一道leetcode:剑指 Offer 34. 二叉树中和为某一值的路径(中等图论深度优先遍历递归)
  • 利用POM完成脚本分离实现企业级自动化(POM设计模式+页面的框架封装+测试报告截图)
  • 嵌入式设计中对于只有两种状态的变量存储设计,如何高效的对循迹小车进行偏差量化