Skip to content

Functions

本文介绍Kotlin方法的使用,方法的参数和返回值。

声明方法(函数)需要用到关键字fun。声明方法的返回类型,需要用冒号:

fun double(x: Int): Int {
    return 2 * x
}

返回值

返回Unit

先看下面这个方法。接受1个String参数,返回值是Unit

fun printMessage(message: String): Unit {
    println(message)
}

查看Unit的源代码。我们得知Unit对应的是Java中的void

package kotlin

/**
 * The type with only one value: the `Unit` object. This type corresponds to the `void` type in Java.
 */
public object Unit {
    override fun toString() = "kotlin.Unit"
}

如果省略Unit,可以写成下面这样

fun printMessage(message: String) {
    println(message)
}

返回类型

返回类型由冒号:指定

sum方法返回Int类型。

fun sum(x: Int, y: Int): Int {
    return x + y
}

返回类型的推断。multiply方法没有用冒号声明返回类型。参数是2个Int,返回类型也是Int。

fun multiply(x: Int, y: Int) = x * y

multiply2方法x参数是Float,推断出返回的是Float。

fun multiply2(x: Float, y: Int) = x * y

参数与默认值

方法的参数可以定义默认值。这点和Python类似。

fun printMessageWithPrefix(message: String, prefix: String = "Info") {
    println("[$prefix] $message")
}

上面的prefix默认值为"Info"。

方法调用

在main函数中调用上面提到的方法。

package com.rustfisher.ktpractice.intro

fun printMessage(message: String): Unit {
    println(message)
}

fun printMessageWithPrefix(message: String, prefix: String = "Info") {
    println("[$prefix] $message")
}

fun sum(x: Int, y: Int): Int {
    return x + y
}

fun multiply(x: Int, y: Int) = x * y

fun multiply2(x: Float, y: Int) = x * y

fun main(args: Array<String>) {
    printMessage("RustFisher")
    printMessageWithPrefix("Fisher", "Rust")
    printMessageWithPrefix("Rust")
    printMessageWithPrefix(prefix = "Rust", message = "Fisher")
    println(sum(40, 2))
    println("multiply返回类型 ${multiply(2, 21).javaClass}")
    println("multiply2返回类型 ${multiply2(2f, 21).javaClass}")
}

输出

RustFisher
[Rust] Fisher
[Info] Rust
[Rust] Fisher
42
multiply返回类型 int
multiply2返回类型 float