kotlin知识点
- 主构造函数里的参数,如果不声明为var或者val,则这个参数一般是用来初始化父类。它不算是这个类的字段,它的作用域只在主构造函数当中。
- val 的对象不仅数据不能变, 引用也不能变。
//自定义的类似apply功能的顶层函数
fun <T> T.build(block: T.() -> Unit): T {
block()
return this
}
//第一个T代表这个函数是泛型, 第二个T代表这个build函数是T这个类的扩展函数, 第三个T代表我传进去的函数类型的参数具有T这个类的上下文,第四个T代表函数返回类型是T- 像工具类这种功能,在kotlin中推荐用“单例类来实现”,但如果确实想要实现类似与类方法(静态方法)的方法的话:
class Example{
...
...
companion object {
@JvmStatic
fun doAction(){
....
} } }
//Example.doAction()第二种方法则是使用“顶层方法”
fun <T>later(block:() -> T) = Later(block)//封装的顶层函数 //满足实现懒加载的类
class Later<T>(val block:() -> T) {
var value: Any? = null operator fun getValue(any :Any?, prop:KProperty<*>):T{
if(value == null){
value = block()
}
return value as T
}
} val p by Later<Int> {//第一种直接使用类的方法
println("make when run")
123
} val q by later {//使用包装成了顶层函数的方法
println("make when run too")
"hello?"
}
fun main(){
println("-----")
println(p)
println(p)
println(q)
println(q)
} -----
make when run
123
123
make when run too
hello?
hello?- 如何去除 原生字符串 的前导空格
val withoutMargin1 = """
|ABC
|123
|456""".trimMargin()
println(withoutMargin1) val withoutMargin2 = """
XYZ
foo
bar
""" println(withoutMargin2) - 编译时常量只能在函数(指包括 main 在内的所有函数)之外定义。这是因为,编译时常量 必须在编译时(程序编译时)赋值,而 main 和其他函数都是在运行时(程序运行时)才调用, 函数内的变量也是在那时赋值。编译时常量要在这些变量赋值前就已存在。 因为使用复杂的数据类型可能会危害编译时的安全保障,所以编译时常量只能是一些常见的 基本数据类型。第 13 章会介绍数据类型构建的相关知识。以下是编译时常量支持的基本数据类型: String Int Double Float Long Short Byte Char Boolean
kotlin知识点的更多相关文章
- kotlin 第一个Android项目
一.创建过程 二.TextView点击事件 class MainActivity : AppCompatActivity() { lateinit var tv:TextView; //初始化Text ...
- Kotlin新语言简介和快速入门知识点
Kotlin新语言简介和快速入门知识点 简介:Kotlin是最近由JetBrains发布的一种基于JVM的编程语言,已经被Google宣布为开发Android App的一级语言Kotlin有着与Jav ...
- 初次尝试用Kotlin实现Android项目
Kotlin: The Swift of Android 起这个文内标题的原因很简单,就是对Kotlin抱有希望--能使Android的开发更简洁.高效及安全.知道Kotlin是从简书的一篇短文,越来 ...
- Kotlin入门第四课:简单工厂模式
Kotlin基础知识的学习,请参考之前的文章: Kotlin入门第一课:从对比Java开始 Kotlin入门第二课:集合操作 Kotlin入门第三课:数据类型 初次尝试用Kotlin实现Android ...
- Kotlin——从无到有系列之高级篇(一):Lambda表达式
如果您对Kotlin很有兴趣,或者很想学好这门语言,可以关注我的掘金,或者进入我的QQ群大家一起学习.进步. 欢迎各位大佬进群共同研究.探索 QQ群号:497071402 进入正题 经过前面一系列对K ...
- Kotlin——从无到有系列之中级篇(四):面向对象的特征与类(class)继承详解
如果您对Kotlin很有兴趣,或者很想学好这门语言,可以关注我的掘金,或者进入我的QQ群大家一起学习.进步. 欢迎各位大佬进群共同研究.探索 QQ群号:497071402 进入正题 在前面的章节中,详 ...
- 爽翻天!告别Java。一起来使用kotlin开发完整客户端
必须写在前面:从Java转向Kotlin,只需要几天时间! 本篇是kotlin开发Android系列教程的最后一篇.前面几篇介绍了kotlin的基本语法.与java的不同之处等.在本篇文章中,将使用到 ...
- 浅谈Kotlin(三):类
浅谈Kotlin(一):简介及Android Studio中配置 浅谈Kotlin(二):基本类型.基本语法.代码风格 浅谈Kotlin(三):类 浅谈Kotlin(四):控制流 前言: 已经学习了前 ...
- 简单工厂模式(Java与Kotlin版)
Kotlin基础知识的学习,请参考之前的文章: Kotlin入门第一课:从对比Java开始 Kotlin入门第二课:集合操作 Kotlin入门第三课:数据类型 初次尝试用Kotlin实现Android ...
随机推荐
- Java JFR 民间指南 - 事件详解 - jdk.ObjectAllocationSample
对象分配采样:jdk.ObjectAllocationSample 引入版本:Java 16 相关 ISSUE:Introduce JFR Event Throttling and new jdk.O ...
- 华为AppTouch创新订阅模式,出海创收事半功倍
去年是中国游戏在全球舞台大放异彩的一年:在国内游戏市场竞争愈发激烈的情况下,不少厂商将目光投向更为广阔的海外市场,把海外视为新的增长点.<PUBG Mobile><万国觉醒>等 ...
- python对BP神经网络实现
python对BP神经网络实现 一.概念理解 开始之前首先了解一下BP神经网络,BP的英文是back propagationd的意思,它是一种按误差反向传播(简称误差反传)训练的多层前馈网络,其算法称 ...
- 【Mybatis源码解析】- JDBC连接数据库的原理和操作
JDBC连接数据库的原理和操作 JDBC即Java DataBase Connectivity,java数据库连接:JDBC 提供的API可以让JAVA通过API方式访问关系型数据库,执行SQL语句, ...
- Vue.js入门及其常用指令
一.Vue框架 https://cn.vuejs.org/ 官网 前端领域有三大框架 Angular诞生于2009年,是由谷歌公司创建出来的框架: React诞生于2013年,是由facebook公司 ...
- 『政善治』Postman工具 — 3、补充:restful风格接口的项目说明
目录 (一)RESTful架构风格特点 1.统一接口风格 2.规范的HTTP请求方法 3.HTTP响应码 4.什么是无状态 (二)JSON数据格式说明 1.什么是JSON 2.JSON格式的特点 3. ...
- 【工具库】Java实体映射工具MapStruct
一.什么是MapStruct? MapStruct是用于代码中JavaBean对象之间的转换,例如DO转换为DTO,DTO转换为VO,或Entity转换为VO等场景,虽然Spring库和 Apache ...
- adbi学习:so hook实现机制
本篇我们来看看adbi的实现原理,其实里面的知识点前面差不多都有涉及了,没多少新知识.adbi利用hijack程序将libexample.so注入到指定的进程中,并且在进程中加载libexample. ...
- CVE-2011-0104:Microsoft Office Excel 中的栈溢出漏洞调试分析
0x01 前言 CVE-2011-0104 是 Microsoft Office 中的 Excel(没有打补丁的情况下)表格程序在处理 TOOLBARDEF 中的 Record 字节时没有对 Len ...
- mybatis常用功能总结
mybatis-plus常用功能总结-以User表为例 1.数据库 id name age email create_time update_time version deleted 1 mary 2 ...