- Kotlin系列
0.【翻译】Using Kotlin for Android Development
1.Kotlin入门(一):变量的声明和使用
2.Kotlin入门(二):方法的定义和使用
3.Kotlin入门(三):if, when, for, while
4.Kotlin入门(四):null安全(“?”,“?:”,“!!”)
5.Kotlin入门(五):类与继承
6.Kotlin入门(六):内联方法
7.Kotlin入门(七):enum,data,sealed,object
方法定义
定义语法:
fun [方法名] ( [参数名] : [参数类型] ) : [返回类型]{
...
return [返回值]
}
- 有返回值
fun multiply(x: Int, y:Int): Int {
return x * y
}
也可以转换为:
fun multiply(x: Int, y: Int): Int = x * y
还可以这样:
var multiply = { x: Int, y: Int -> x * y }
-
无返回值
使用Unit代替返回类型:
fun log(msg: String): Unit {
print(msg)
}
Unit也可以省去:
fun log(msg: String) {
print(msg)
}
-
成员方法
与Java一样通过对象.方法名的方式调用:
fun main(args: Array<String>) {
Test().method()
}
class Test{
fun method(){
print("hello")
}
}
-
静态方法
和Java一样通过类名.方法名的方式调用:
fun main(args: Array<String>) {
Test.com()
}
class Test{
companion object{
fun com(){
print("com")
}
}
}
-
顶级方法
在类外部定义的方法,可理解为静态方法,通过包名.方法名的方式调用:
package a.b.c
fun top(){
print("top")
}
fun main(args: Array<String>) {
a.b.c.top()
}
-
顶级方法与静态方法区别
通过反编译可以知道,其实他们不在一个类中。
如果有顶级变量会新生成一个[文件名+kt]的类,顶级方法就在其中。
方法调用顺序可变
- 通过指明参数名称,可按任意顺序传参:
fun main(args: Array<String>) {
log(name = "mao", age = 18)
}
fun log(age: Int, name: String) {
print("age:$age,name:$name")
}
命名参数
- 方法样例:
fun logInfo(
name: String,
age: Int,
married: Boolean = true,
language: String = "Chinese"
) {
println("[name:$name,age:$age,married:$married,language:$language");
}
必须传入未设置默认值的参数
在上述logInfo方法中,name和age未设置默认值,必须传参,其它参数可自由选择:
logInfo("ma",18)
logInfo("ma",18,false);
logInfo("ma",18,false,"English");
可变参数
- 使用vararg 修饰参数:
fun logInfos(vararg infos: String) {
for (info in infos) {
print("$info ")
}
}
- 方法调用
logInfos("aaa","bbb","ccc")