Kotlin 学习笔记 1
原创...大约 2 分钟
这是我在学习 Bennyhuo( github )的 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》
本文地址: https://jixiaoyong.github.io/blog/posts/135b2780.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 许可协议。转载请注明出处!