kotlin学习之函数

本文详细介绍了Kotlin中函数的定义和使用,包括函数的定义、可变参数、顶层函数、函数默认参数、扩展函数、中缀函数的概念,并提供了相应的示例代码。还提到了顶层函数属性以及函数字面量,但函数字面量的内容暂未更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

函数的定义和使用

    定义

fun sum(a:Int,b:Int):Int{
    return a+b
}

      sum为函数名称  括号内为形参  :Int 为返回值类型

      上述代码可简写为

fun sum(a:Int,b:Int):Int = a+b

       还可以写成

var i = {a:Int,b:Int -> a+b}

var sum =i(2,3)

println(sum)

  可变参数的函数 vararg

      vararg所修饰的变量可以接受无限多个参数,具体如下。

fun sum(vararg x:Int):Int{
    var total=0
    for(i in x)
        total+=i
    return total
}

      上述代码描写的是多个参数的和。调用如下

val n = sum(1,2,3,8,4,5,1)
println(n)

 顶层函数(内容参考自

    原来在Java中,类处于顶层,类包含属性和方法,在Kotlin中,函数站在了类的位置,我们可以直接把函数放在代码文件的顶层,让它不从属于任何类。就像下面这样,我们在一个Str.kt文件中写入如下的Kotlin代码

package util

fun joinToStr(collection: Collection<String>): String{
    //....
    return "";
}

     请注意,我们把它放在了util包中,这在我们厚密啊调用这个类时非常重要。 

让我们现来看看在另一个Kotlin类中怎么调用。

import util.joinToStr

fun main(args: Array<String>){
    joinToStr(collection = listOf("abc", "ok"))
}

      我们可以通过import 包名.函数名来导入我们将要使用的函数,然后就可以直接使用了。

顶层函数属性(内容参考自

     了解了顶层函数,下面再看看顶层属性。顶层属性也就是把属性直接放在文件顶层,不依附于类。我们可以在顶层定义的属性包括var变量和val常量,就像下面这样。

package config

var count = 0

val REQUEST_URL = "http://localhost:8080/"

const val BASE_URL = "http://www.xxx.top/"

使用

import config.count

fun main(args: Array<String>){

    //使用var变量
    count++

    //使用val常量
    config.REQUEST_URL

    //使用const val常量
    config.BASE_URL
}

函数的默认参数

  在定义函数的时候所需要传入的参数比较多,而有时候有用不到这么多参数,或者使用者忘记填或少填。那么久需要为参数定义默认的参数。

fun selectMan(name:String="张三",sex:String="男",age:Int=20){
    ...
}

    默认参数也可以用到够早参数中,从而避免产生更多的二次构造函数

class User(val name:String,val isVip:Boolean,credits:Int){
    constructor(name:String):this(name,false,0)
    constructor(name:String,isVip:Boolean):this(name,isVip,0)
}

   可改写成

class User(val name:String,val Vip:Boolean=false,credits:Int=0)

扩展函数

对现有的类进行改进,加入新的函数。以Int为例,在Int类中加入一个求平方的方法。

fun Int.square()=this*this
//使用
val a=8
println(a.square())
println(8.square())

注意 函数扩展不能重载类或者接口中已经定义的函数。

因为,编译器会首先去接受这类型的所有父类和接口中去查找有没有相同的成员函数如果有则使用。

起作用范围与普通函数一样

infix 中缀函数

中缀函数跟赋值操作类似,不同的是名称可以是任意的。例如:

val train = "北京" to "上海"
//tarin 被变成了一个二元数组
//调用
println("$train  ${train.first}")
//结果
(北京, 上海)  北京

自定义中缀函数,使用infix关键字加载fun之前,而且只有一个参数:

infix fun String.到(other:String):String{
    return this+other
}
//调用
val train = "北京" 到 "上海"

函数字面量

 有待更新。。。工作之后一直用的java,后期抽时间补充吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值