您的位置:首页 > 移动开发 > Android开发

Android kotlin入门与基础语法二

2017-06-28 17:56 495 查看
基本语法:

使用类型检测及自动类型转换

is运算符检测一个表达式是否某类型的一个实例。如果一个不可变的局部变量或属性已经判断出为某类型,那么检测后的分支中可以直接当作该类型使用,无需显示转换,代码示例:

fun getStringLength(obj:Any):Int?
{
if(obj is String)
{
//'obj'在该条件分支内自动转换成'String'
return obj.length
}
//在离开类型检测分支后,'obj'仍然是'Any'类型
return null
}
fun main(args: Array<String>) {
println("Hello, world!")
val a=getStringLength("thanks")
println(a)
}
fun getStringLength(obj: Any): Int? {
if (obj !is String) return null
// `obj` 在这⼀分⽀⾃动转换为 `String`
return obj.length
}
fun getStringLength(obj: Any): Int? {
// `obj` 在 `&&` 右边⾃动转换成 `String` 类型
if (obj is String && obj.length > 0) {
return obj.length
}
return null
}


for 循环的使用

val items = listOf("apple", "banana", "kiwi")
for (item in items) {
println(item)
}
或者
val items = listOf("apple", "banana", "kiwi")
for (index in items.indices) {
println("item at $index is ${items[index]}")
}


使用while循环

fun main(args: Array<String>) {
val items = listOf("apple", "banana", "kiwi")
var index=0
while(index<items.size){
println("item at $index is ${items[index]}")
index++
}
}


使用when表达式

when表达式的神奇之处就是可以任意规则匹配when方法的参数obj值,甚至是一个表达式,然后一个帅气又直接的else就返回匹配不到的情况值,真是牛了!

fun describe(obj:Any):String=
when(obj)
{
1->"one"
"Hello"->"Greeting"
is Long->"Long"
!is String->"Not a String"
else->"Unknown"
}


区间:使用in运算符检测某个数字是否在指定区间内:

普通区间:

val x = 10
val y = 9
if (x in 1..y+1) {
println("fits in range")
}


区间迭代:

for (x in 1..5) {
print(x)
}
输出结果: 1 2 3 4 5s


数列迭代:

for(x in 1 .. 10 step 2)
{
print(x)
}
输出结果: 1 3 5 7 9
for(x in 9 downTo 0 step 3)
{
print(x)
}
输出结果: 9 6 3 0


使用集合

集合for in普通迭代

for (item in items) {
println(item)
}


使用when in运算符判断集合内是否包含某实例

when {
"orange" in items -> println("juicy")
"apple" in items -> println("apple is fine too")
}


使用 lambda 表达式来过滤(filter)和映射(map)集合:

fruits
.filter { it.startsWith("a") }
.sortedBy { it }
.map { it.toUpperCase() }
.forEach { println(it) }


备注: 详细请参见lambda函数及lambda表达式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: