先提个问题
-
RxJava
。想象这样一个需求:用户连续点击某个区域10次且每次间隔不超过500毫秒,则触发一个彩蛋。
实现这个需求很容易,但代码会很混乱。我们得自己控制计时器,保存时间戳,可能还会有令人讨厌的空接口。如果用RxJava来做,几行代码就能搞定。如果再配合Kotlin的函数式编程,简直不能更爽~
关于RxJava的使用,网上已经有很多了。我有空了可能也会写一些。
-
如果你尝试了
Android Databinding
,有没有发现External Libraries里面多了kotlin-runtime和kotlin-stdlib?
Google内部正是用Kotlin开发的Databinding。虽然短期内Kotlin还不太可能成为Android官方开发语言,但至少这是个好的迹象。
Kotlin
呢?
这又是另一个很大的话题了。请参看大神Jake Wharton的这篇
文章
(要翻墙)。
那么进入正题。我的学习步骤基本是按照官方的
Reference
来,所以可能写着写着就成了翻译官方文档了……哈哈哈哈
1 2 3 4
|
val a: Int = 1 val b = 1 val c: Int c = 1
|
1 2
|
val a = 1 print("Value of a: ${a}"}
|
1
|
fun max(a: Int, b: Int) = if (a > b) a else b
|
1 2 3 4 5 6
|
fun getStringLength(obj: Any): Int? { if (obj is String) { return obj.length } return null }
|
1 2 3 4
|
fun main(args: Array<String>) { for (arg in args) print(arg) }
|
1 2 3 4 5
|
fun main(args: Array<String>) { var i = 0 while (i < args.size()) print(args[i++]) }
|
1 2 3 4 5 6 7 8 9
|
fun cases(obj: Any) { when (obj) { 1 -> print("One") "Hello" -> print("Greeting") is Long -> print("Long") !is String -> print("Not a string") else -> print("Unknow") } }
|
1 2 3 4 5 6 7 8
|
if (x in 1..y-1) print("OK") if (x !in 0..array.lastIndex) print("Out")
for (x in 1..5) print(x)
|
1 2
|
if (text in names) print("Yes")
|