在Kotlin的世界里函数(方法)是第一公民,它可以存储在变量中,也可以在方法间传递或以方法为返回值(高阶函数),甚至方法内部也可以嵌套方法。
函数的定义
以下面的例子做说明
//计算字符串长度
fun getLength(str: String): Int {
return str.length
}
声明函数的关键字fun
,后面跟函数名getLength
,括号内为参数列表。
每一个参数先声明参数名,然后跟冒号:,最后是参数类型,多个参数用逗号分隔。
Int是返回值类型,它与java中的int包装类Integer对应,参数列表和返回值之间以冒号分隔。
如果返回值是空可以写做Unit或省略不写。
//返回值为空
fun helloWorld(str: String) {
println("Hello, World!")
}
可变长参数声明vararg关键字
@JvmStatic
fun main(args: Array<String>) {
print(join('h','e','l','l','o'))
}
fun join(vararg chars: Char): String {
return chars.joinToString("")
}
参数默认值
下面的例子展示了如何使用默认参数,即在参数类型声明后加"=",然后跟默认值,实际调用中默认值可缺省。
@JvmStatic
fun main(args: Array<String>) {
print(join('h','e','l','l','o'))
print(testDefault(2))
}
//计算次幂
fun testDefault(base : Int, power : Int=3) : Double{
return Math.pow(base.toDouble(), power.toDouble())
}
实际使用中不建议可变长参数和默认参数一起使用,编译器可能产出意想不到的结果。
变量
Kotlin中以var关键字声明为变量,val声明为常量。
变量后可跟参数类型,也可不声明参数类型而通过参数值推断。
来看例子
val a: Int = 1 //立即赋值
val b = 2 // 自动推断出 `Int` 类型
val c: Int // 如果没有初始值类型不能省略
c = 3 // 明确赋值
给已赋值的常量再次赋值会报错,使用未赋值的常量会报错。
val c: Int
c.and(1) // error
val a: Int = 2
a = 1 // error
网友评论