以前看过的东西不知道输出,最近春节看了kotlin,从最基础的开始,用这样博客的形式开始文档输出,旨在加强学习印象
首先
这个函数转化入参为字符串
fun main(args: Array<String>) {
println(convert2Uppercase("hello world"))
println(convert2Uppercase(23))
}
fun convert2Uppercase(str: Any) : String?{
if(str is String){
return str.toUpperCase()
}
return null
}
在java中可能需要instanceof 判断然后再进行强制类型装换,kotlin编译器自动帮我们识别类型
在数组循环中,跟es6/typescript支持的有点相似,既能取出元素,也能取出index
fun main(args: Array<String>) {
var array = intArrayOf(1, 2, 3, 4, 5)
for (item in array) {
println(item)
}
println("-----")
for (index in array.indices) {
println("array[$index] = ${array[index]}")
}
println("-----")
for ((index, value) in array.withIndex()) {
println("array[$index] = $value")
}
}
可以打印一个元素,可以打印数组里面的index,可以打印index跟数组内容
看kotlin Int的实现可以看出,在面向jvm的时候,Int是原生数据类型,而intArrayOf返回的是int[]
我们再来看下强大的when
fun main(args: Array<String>) {
println(myPrint("hello"))
println(myPrint("world"))
println(myPrint("hello world"))
println(myPrint("nothing"))
println("------")
var a = 6
var result = when(a){
1 -> {
println("a = 1")
10
}
2 -> {
println("a = 2")
20
}
3, 4, 5-> {
println("a =3 or a = 4 or 5")
30
}
in 6..10-> {
println("in range")
40
}
else -> 50
}
}
fun myPrint(str: String): String {
return when (str) {
"hello" -> "HELLO"
"world" -> "WORLD"
"hello world" -> "HELLO WORLD"
else -> "other input"
}
}
fun myPrint2(str: String): String = when (str) {
"hello" -> "HELLO"
"world" -> "WORLD"
"hello world" -> "HELLO WORLD"
else -> "other input"
}
when的使用相对于java中的switch case, ->这样的写法并不是lambda表达式,但是看看myPrint函数,语法比起java要风骚��,也可以按照myPrint2函数的写法,直接返回一个表达式,语法更加简约��,在最后的例子中,when的条件可以是枚举数,可以是枚举数范围,也可以是一个区间。由上面的例子可以看出kotlin when的语法糖对开发很友好,十分适合写我们平时复杂的业务开发��