(2018.7.20)
函数定义
fun getStrLength(str: String): Int {
return name.length
}
循环
for in
val temp = "hello"
// 输出字符串的每一项
for (c: Char in temp) {
println(c)
}
// 输出字符串的每项及对应的index
for ((index, c) in temp.withIndex()) {
println("index = $index, c = $c")
}
高级循环
forEach
// 输出字符串的每一项
temp.forEach {
println(it)
}
// 输出字符串的每项及对应的index
temp.forEachIndexed { index, c ->
println("index = $index, c = $c")
}
跳出循环
支持:break (跳出循环)、continue(跳过本次循环,继续下一个循环)
指定跳出到标签处
val numStr = "1234"
loop@for (c in temp) { // 定义标签,名字自定义
for (n in numStr) {
if (c == 'e' && n == '3') {
break@loop // 这样可以直接跳出外循环
}
println("$c $n")
}
}
区间
// Int 区间
val rang = 1..100 // [1, 100] 最大100
val rang1 = 1 until 100 // [1, 100) 最大99
// Char 区间
val strRang = 'a'..'z'
val strRang1 = 'a' until 'z'
// Long 区间
val longRang = 1L..100L
// 定义反向区间
val rangA = 10 downTo 1
// 反转区间
val rangA1 = rangA.reversed()
数组
// 定义数组
val array = arrayOf("AA", "BB", "CC")
// 修改数组中某个位置的值
// 方法1
array[2] = "DD"
// 方法2
array.set(1, "FF")
when表达式
// 使用
fun getChar(age: Int): Char {
when (age) {
in 1..6 -> return '1' // 支持区间
7 -> {
return 'A'
}
9,10 -> { // 满足其中一个
return 'B'
}
is Int -> { // 只要是逻辑语句就可以
return 'i'
}
else -> {
return 'Z'
}
}
}
// when 可以不添加参数
when {
age == 1 -> {
return 'B'
}
}
// when有返回值
fun getChar(age: Int): String = when (age) {
in 1..6 -> "aaA"
10 -> "a4"
else -> "aa"
}
函数表达式
kotlin 中函数和对象是平等的
val add: (Int, Int) -> Int = {a, b -> a + b} // 定义函数变量
// 定义默认参数
fun sayHello(name: String = "AA", age: Int) {
println("hello $name age is $age")
}
// 调用
sayHello(age = 15) // 输出 hello AA age is 15
// 具名参数,指定给哪一个参数赋值
sayHello(age = 15, name="BB")
// 定义可变参数
fun add(vararg params: Int): Int {
var sum = 0
for(ele in params) {
sum += ele
}
return sum
}
// 调用
add(1, 2, 4)
add(1, 4, 10, 20)
异常处理
try {
// 可能发生异常的代码
} catch(e: Exception) {
// 处理异常时的逻辑
}
网友评论