Kotlin学习日记-函数

1.函数

Kotlin 函数使用 fun 关键字声明:

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

1.1 函数用法

调用函数与调用对象函数:

val result = double(2)

Stream().read() // 创建类 Stream 实例并调用 read()

1.1.1 参数

函数参数使用 Pascal 表示法定义——name: type。参数用逗号隔开, 每个参数必须有显式类型:

fun powerOf(number: Int, exponent: Int): Int {
    /*……*/ }

1.1.2 默认参数

函数参数可以有默认值,当省略相应的参数时使用默认值。这可以减少重载数量

fun read(
    b: ByteArray,
    off: Int = 0,
    len: Int = b.size,
) {
    /*……*/ }

覆盖方法总是使用与基类型方法相同的默认参数值。 当覆盖一个有默认参数值的方法时,必须从签名中省略默认参数值:

open class A {
   
    open fun foo(i: Int = 10) {
    /*……*/ }
}

class B : A() {
   
    override fun foo(i: Int) {
    /*……*/ }  // 不能有默认值。
}

如果在默认参数之后的最后一个参数是 lambda 表达式,那么它既可以作为具名参数在括号内传入,也可以在括号外传入:

fun foo(
    bar: Int = 0,
    baz: Int = 1,
    qux: () -> Unit,
) {
    /*……*/ }

foo(1) {
    println("hello") }     // 使用默认值 baz = 1
foo(qux = {
    println("hello") }) // 使用两个默认值 bar = 0 与 baz = 1
foo {
    println("hello") }        // 使用两个默认值 bar = 0 与 baz = 1

1.1.3 具名参数

当一个函数参数都有默认值的情况下,我们可以指定只传入某个参数,例如:

fun reformat(
    str: String,
    normalizeCase: Boolean = true,
    upperCaseFirstLetter: Boolean = true,
    divideByCamelHumps: Boolean = false,
    wordSeparator: Char = ' ',
) {
    /*……*/ }

fun main(){
   
    reformat(
        "String!",
        upperCaseFirstLetter = false //只传入某个参数
    )
}

1.1.4 返回 Unit 的函数

如果一个函数并不返回有用的值,其返回类型是 Unit。Unit 是一种只有一个值——Unit 的类型。 这个值不需要显式返回:

fun printHello(name: String?): Unit {
   
    if (name != null)
        println("Hello $name")
    else
        println("Hi there!")
    // `return Unit` 或者 `return` 是可选的
}

//同样 不声明:Unit也可以
fun printHello(name: String?){
   
    if (name != null)
        println("Hello $name")
    else
        println("Hi there!")

}

1.1.5 单表达式函数

当函数返回单个表达式时,可以省略花括号并且在 = 符号之后指定代码体即可:

fun double(x: Int): Int = x *
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值