• 主构造函数里的参数,如果不声明为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知识点的更多相关文章

  1. kotlin 第一个Android项目

    一.创建过程 二.TextView点击事件 class MainActivity : AppCompatActivity() { lateinit var tv:TextView; //初始化Text ...

  2. Kotlin新语言简介和快速入门知识点

    Kotlin新语言简介和快速入门知识点 简介:Kotlin是最近由JetBrains发布的一种基于JVM的编程语言,已经被Google宣布为开发Android App的一级语言Kotlin有着与Jav ...

  3. 初次尝试用Kotlin实现Android项目

    Kotlin: The Swift of Android 起这个文内标题的原因很简单,就是对Kotlin抱有希望--能使Android的开发更简洁.高效及安全.知道Kotlin是从简书的一篇短文,越来 ...

  4. Kotlin入门第四课:简单工厂模式

    Kotlin基础知识的学习,请参考之前的文章: Kotlin入门第一课:从对比Java开始 Kotlin入门第二课:集合操作 Kotlin入门第三课:数据类型 初次尝试用Kotlin实现Android ...

  5. Kotlin——从无到有系列之高级篇(一):Lambda表达式

    如果您对Kotlin很有兴趣,或者很想学好这门语言,可以关注我的掘金,或者进入我的QQ群大家一起学习.进步. 欢迎各位大佬进群共同研究.探索 QQ群号:497071402 进入正题 经过前面一系列对K ...

  6. Kotlin——从无到有系列之中级篇(四):面向对象的特征与类(class)继承详解

    如果您对Kotlin很有兴趣,或者很想学好这门语言,可以关注我的掘金,或者进入我的QQ群大家一起学习.进步. 欢迎各位大佬进群共同研究.探索 QQ群号:497071402 进入正题 在前面的章节中,详 ...

  7. 爽翻天!告别Java。一起来使用kotlin开发完整客户端

    必须写在前面:从Java转向Kotlin,只需要几天时间! 本篇是kotlin开发Android系列教程的最后一篇.前面几篇介绍了kotlin的基本语法.与java的不同之处等.在本篇文章中,将使用到 ...

  8. 浅谈Kotlin(三):类

    浅谈Kotlin(一):简介及Android Studio中配置 浅谈Kotlin(二):基本类型.基本语法.代码风格 浅谈Kotlin(三):类 浅谈Kotlin(四):控制流 前言: 已经学习了前 ...

  9. 简单工厂模式(Java与Kotlin版)

    Kotlin基础知识的学习,请参考之前的文章: Kotlin入门第一课:从对比Java开始 Kotlin入门第二课:集合操作 Kotlin入门第三课:数据类型 初次尝试用Kotlin实现Android ...

随机推荐

  1. Ambassador-09-prefix正则表达式

    设置 prefix_regex: true,即prefix就可以设置成正则表达式 --- apiVersion: getambassador.io/v2 kind: Mapping metadata: ...

  2. Day09_46_Set集合_SortedSet03

    SortedSet03 让SortedSet集合完成比较,还有另外一种方法,那就是单独编写一个比较器. java.util.comparator 在TreeSet集合创建的时候可以在集合中传入一个比较 ...

  3. 读取ini配置文件 及 UI对象库

    读取ini配置文件 配置项 读取API 写入API 实战:UI 对象库 读取ini配置文件 配置项 在每个 ini 配置文件中,配置数据会被分组(比如下述配置文件中的"config" ...

  4. 另类的曲线方式定时Start up/Shut down VM 的解决方案

    一,引言 最近看到一位小兄弟在为了做 Azure 云虚拟机的自动关机开启 在群里求助,最后也不知道结果咋样了. 至于他提到的利用 Automation Account 我是没有接触过,并且也没有看资料 ...

  5. 1.5.1- HTML之相对路径

    网页需要图片,首先需要找到它.实际工作中,通常新建一个文件夹专门用于存放图像文件,这时插入图像,就需要采用"路径"的方式来制定图像文件的位置.路径可以分为相对路径与绝对路径. 相对 ...

  6. 软件篇-03-基于ORB_SLAM2手写SLAM稠密地图构建实现

    本文使用的方法不是从内部修改ORBSLAM2源码以获取稠密点云,而是先从ZED2 sdk获取以摄像头坐标系为描述的三维点云/作为点云地图的一个子集,然后融合IMU与ORB_SLAM2进行实时定位,通过 ...

  7. Ubuntu20安装Truffle框架并部署第一个DApp

    1.查看Ubuntu版本信息 $ screenfetch 2.安装node ①查看nodejs官网稳定版(LTS)版本号(下面的14就是此时的版本号) ②添加源 $ curl -sL https:// ...

  8. 感染性的木马病毒分析之样本KWSUpreport.exe

    一.病毒样本简述 初次拿到样本 KWSUpreport_感染.exe.v 文件,通过使用PE工具,并不能辨别出该样本是那种感染类型,使用了一个比较直接的方法,从网上查资料,获取到了该样本的正常EXE文 ...

  9. WPScan工具的使用(WordPress扫描工具)

    WPScan是Kali Linux默认自带的一款漏洞扫描工具,它采用Ruby编写,能够扫描WordPress网站中的多种安全漏洞,其中包括WordPress本身的漏洞.插件漏洞和主题漏洞.最新版本WP ...

  10. UVA11174村民排队问题

    题意:      有n个人要排队,给你一些父子关系,要求儿子不能站在自己的父亲前面,问有多少种排队方式? 思路:       白书上的题目,首先我们可以把关系建成树,这样我们就有可能得到一个森林(或者 ...