美文网首页Android Kotlin
Kotlin入门(二):方法的定义和使用

Kotlin入门(二):方法的定义和使用

作者: 无余 | 来源:发表于2018-04-03 12:16 被阅读26次

方法定义

定义语法:

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")

相关文章

网友评论

    本文标题:Kotlin入门(二):方法的定义和使用

    本文链接:https://www.haomeiwen.com/subject/csfqhftx.html