跳至主要內容

Kotlin 学习笔记 1

JI,XIAOYONG...大约 2 分钟

这是我在学习 Bennyhuo( githubopen in new window )的 kotlin 入门视频时的一些笔记,比较偏基础,用于查缺补漏。

  • xx.map() & xx.flatMap()

    xx.flatMap() 用于返回可迭代的数组,而 xx.map() 则是任何可迭代数据都有的用来遍历的方法。

    var arr = arrayListOf<String>("a c v de  fb s e  gf d")
    arr.flatMap {
        it.split(" ")
    }.map{
        print("${it.toUpperCase()}")
    }
  • enum class 枚举类型

    分为有参和无参,枚举变量以,分隔,如果 enum 还有方法或者伴生对象,则最后一个变量后为;,否则可为,;或者没有。

enum class City{
    UK,USA,EU;

    //以下为非必须代码,仅表示可以有这些功能
    fun say(){...}

    companion object{
        fun fun1(s:String):City{
            return valueOf(s.toUpperCase())
        }
    }
}

​ 有参的情况如下

enum class Country(val aName:String){
    CHINA("中国"),
    JAPAN("日本"),
    USA("美国"),
    UK("英国");
    }

​ 使用:通过 enum 的 valueOf() 方法获取枚举对象实例

var s = "uk"
var city = City.valueOf(s.toUpperCase())
//或者通过伴生对象:
var city = City.fun1(s)
  • companion object 伴生对象

    在类的定义,可以直接用类名.方法名()调用,相当于 java 中的静态方法

    一个类中只能有一个伴生对象

class xxx{
    ...
    companion object{
        fun parse(x: String): Country {
            return valueOf(x.toUpperCase())
        }
        ...
    }
}
  • object 修饰的类

    等同于只有一个实例的类,相当于 java 中的静态类,所有方法可以直接用类名调用

object ClassName{
    fun(){...}
}
  • fun ClassName.funName() 为类添加新的方法

    对于不能直接修改的类,有需要对其增加一个方法,可以自定义一个ClassName.funName()的方法来达到这个目的。

private fun Country.sayNum() {

    //this 引用的是 country 对象
    var num = when (this) {

        CHINA -> 1
        JAPAN -> 2
        USA -> 3
        UK -> 4
    }
}

​ 在使用时可以通过Country的对象调用syaNum()方法

  • data class 数据类

    可以有方法,方便复制。

    必须至少有一个参数,并且参数都需要用 var/val 修饰

data class dataClass(var name: String, val age :Int)
  • 文件读取
    • resource 目录下的文件读取
    var input = File(ClassLoader.getSystemResource("input").path).readText()
  • 与 RxJava 结合

    统计文本中字母个数,基于 RxJava 1.2.1

    Observable.from(input.toCharArray().asIterable())
            .filter { !it.isWhitespace() }
            .groupBy { it }
            .map{
                o ->o.count().subscribe{
                    print("${o.key}-> $it  ,")
                }
            }
            .subscribe()
文章标题:《Kotlin 学习笔记 1》
本文作者: JI,XIAOYONG
发布时间: 2018/02/09 16:18:01 UTC+8
更新时间: 2023/12/30 16:17:02 UTC+8
written by human, not by AI
本文地址: https://jixiaoyong.github.io/blog/posts/135b2780.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 许可协议。转载请注明出处!
你认为这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.8