• 主构造函数里的参数,如果不声明为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. (九)Docker-PS 详解

    1. 作用 查看 docker 容器 2. 基本语法 docker ps [OPTIONS] OPTIONS说明: -a :显示所有的容器,包括未运行的. -f :根据条件过滤显示的内容. --for ...

  2. ACCESS常见错误场景

    ACCESS常见错误场景 今天用access时发现好多报错的地方,emmm,比MySQL麻烦好多,有些甚至还要自己去配置环境 不吐槽了,进入正题: 报错场景一:您尝试执行不包含指定聚合函数的查询 第一 ...

  3. 破解class文件的第一步:深入理解JAVA Class文件

    摘要: java定义了一套与操作系统,硬件无关的字节码格式,这个字节码就是用java class文件来表示的,java class文件内部定义了虚拟机可以识别的字节码格式,这个格式是平台无关性的. j ...

  4. [高清文字版]R语言实战(可复制文字PDF)

    电子书资源:R语言实战 书籍简介   <R语言实战>从解决实际问题入手,尽量跳脱统计学的理论阐述来讨论R语言及其应用,讲解清晰透澈,极具实用性.作者不仅高度概括了R语言的强大功能.展示了各 ...

  5. 10行C++代码实现高性能HTTP服务

    前言 是不是觉得C++写个服务太累,但又沉迷于C++的真香性能而无法自拔?作为一个老牌C++程序员(可以看我 github 上十几年前的C++项目:https://github.com/kevwan ...

  6. Property Distribution(DFS)

    Property Distribution タナカ氏が HW アールの果樹園を残して亡くなりました.果樹園は東西南北方向に H×W の区画に分けられ.区画ごとにリンゴ.カキ.ミカンが植えられています. ...

  7. 1.6.5- HTML之自定义列表

    定义列表常用于对术语或名词进行解释和描述,定义列表的列表项前没有任何项目符号,其基本语法如下: <dl> <dt>定义标题</dt> <dd>定义描述, ...

  8. hdu4535

    题意: 吉哥系列故事--礼尚往来 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) To ...

  9. hdu3329 二分+搜索

    题意:       给你一个岛,然后岛的外侧开始涨水(内侧不涨只有外侧,也就是里面的0永远是0),问最少涨水多少才能把岛分成两个或者两个以上. 思路:       可以二分枚举水的高度(数据不大估计暴 ...

  10. VRRP中的上层回的路由

    如图,PC1和PC2处于不同网段,他们到AR3都有两条路可以选,现在要让他们到达AR3负载均衡,并且当AR1和 AR2的其中一个路由器挂了之后,他们仍然可以正常到达AR3. 他们去往AR3的VRRP的 ...