kotlinkotlin

Kotlin-简约之美-基础篇(二):方法的定义和使用

2020-02-27  本文已影响0人  门心叼龙

@[toc]

方法定义

定义语法
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");

可变参数

fun logInfos(vararg infos: String) {
    for (info in infos) {
        print("$info  ")
    }
}
logInfos("aaa","bbb","ccc")
上一篇下一篇

猜你喜欢

热点阅读