函数声明的方式
1:一般方式
fun fun_name (参数:参数类型):返回值类型{
函数体//私有函数在fun前声明private 例如 private fun add(x:Int,y:Int){return x+y}
}
当函数只有一行时
var i:(参数类型,参数类型)->返回值类型 = {参数名,参数名 -> 函数体}
i(x,y)//直接调用
例如: var i(Int,Int)->Int ={ x,y -> x+y }
i(3,5)
更简洁的写法
var i={参数:参数类型,参数:参数类型 -> 函数体}//变量i本身就是一个函数
i(参数)//直接进行调用
具名参数:
调用函数时可以给具体的某些参数赋值
例如:已知名为circle_area(pI:Float =pi,r:Float):Float的函数他有两个参数,pi和半径r
我们声明一个全局变量pi=3.14,则函数第一个参数已知,在调用函数时可以通过具名参数赋值
circle_area(r = 2.0f)//通过具名参数调用函数
字符串与数字转换
toString()与toInt()两个函数进行类型转换
输入
readLine()函数,但是readLine函数是可以为空的,在类型转换时要给被转换的输入上加上问号“?”判断是否为空
例如:a=readLine()
a?.toInt()//进行操作可能会报错
或者使用!!表示输入一定不为空
a=readLine()
a!!.toInt()
异常处理:使用try将可能出现问题的代码包裹,当发生异常时,使用catch(e:exception)进行处理
一个非常大的类型:BigInteger
kotlin的尾递归优化
在递归函数前加上tailrec 表明对该函数进行尾递归优化,但要求递归是完全调用本身,不能加别的东西,否则会有警告
面向对象(类)
类的声明: class class_Name(var 成员变量:变量类型,var 成员变量:变量类型){fun 成员函数}
类的调用: var class1 = class(成员变量,成员变量)