美文网首页
kotlin-----方法

kotlin-----方法

作者: 会写代码的小猿猴 | 来源:发表于2022-01-06 17:23 被阅读0次

方法的声明

  • 普通方法的声明

比如我需要定义一个接收两个int类型参数,返回这两个参数的和,代码如下:

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

定义方法构造和Java有区别,只需牢记就好

  • 成员方法的定义与调用
class Test{
    fun add(a:Int,b:Int):Int{
        return a+b
    }
}

调用:

Test().add(1,2)
  • 静态方法的定义与使用

Kotlin给Java开发者带来最大改变之一就是废弃了static修饰符。与Java不同的是在Kotlin的类中不允许你声明静态成员或方法。相反,你必须向类中添加Companion对象来包装这些静态引用
定义:

class Test{
    companion object{
        fun add(a:Int,b:Int):Int{
            return a+b
        }
    }
}

调用直接通过类名调用,这一点和Java一样,其中 companion object包裹的内容叫做类Test的伴生对象

 Test.add(1,3)
  • 静态类的定义

静态类通过object关键字来修饰,静态类里面的方法都是静态方法

object NumUtils{
    fun double(a:Double):Double{
        return a*a
    }
}

调用也是一样,静态类名调用,NumUtils叫做单例。可以用@JvmStatic修饰符来将其中的成员变量或者方法指定为静态成员变量或者方法。

NumUtils.double(2)
  • 单表达式方法
fun add(a:Int,b: Int):Int=a+b

该方法等价于

fun add(a:Int,b: Int):Int{
    return a+b
}
  • 方法带默认参数

如字面意思,方法带有默认参数,调用时可以省略有默认值的参数,与Java相比,可以减少方法的重载数量
例:

fun read(ArrayList<Char>,off:Int=1,len:Int=b.size){
    //doSomeThings
}

调用时有三种方式

 val b = arrayListOf('a', 'b', 'c')
    read(b)
    read(b, 0)
    read(b, 2, 5)

相对于Java而言节省了参数为一个和两个时的重载方法。

  • 方法参数可变

通过修饰符vararg可以表示接收多个同数据类型的参数

fun append(vararg chars:Char):String{
    val str=StringBuffer()
    chars.forEach {
        str.append(it)
    }
    return str.toString()
}

调用:

 println(append('h','e','l','l','o'))
  • 局部方法

kotlin支持在方法内部定义方法,比如我在a方法内部定义方法b,那方法b的作用于仅局限于方法a内部。

fun margic():Int{
    fun add(a:Int):Int{
        return a+a
    }
    //生成0到100的随机数
    val b=(0..100).random()
    return add(b)
}
  • 使用lambda表达式创建方法

lambda表达式的特点:
1、是匿名方法
2、是可以作为参数传递的
lambda表达式创建方法分为有参数的情况和无参数情况

  • 无参数情况
    格式:
var/val 变量名={操作的代码}

例如我们将下面这个方法改成lambda表达式:

fun test(){
 println("无参数情况")
}

改成lambda表达式如下所示:

val test2 =  { println("无参数情况") }

运行时使用变量名加括号就可以了

test2()
  • 有参数情况
    格式:
var/val 变量名:(参数类型,参数类型,...)  -> 返回值类型={参数1,参数2,... -> 操作参数的代码}

在返回值类型可以自动推导的情况下可等价于:

val/var 变量名={参数1:类型,参数2:类型,... -> 操作参数的代码}

比如我们有以下一个简单求和的方法

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

改成lambda表达式如下

val test3:(Int,Int)->Int={a,b -> a+b}

也可等价于:

val test4={a:Int,b:Int -> a+b}

调用时也是直接变量名加括号就可以了。

相关文章

  • kotlin-----方法

    方法的声明 普通方法的声明 比如我需要定义一个接收两个int类型参数,返回这两个参数的和,代码如下: 定义方法构造...

  • Kotlin-----方法进阶

    在kotlin中我们将函数作为参数或者返回值的函数叫做高阶函数,也就是使用方法体作为参数的方法叫做高阶方法。 函数...

  • Kotlin-----扩展技术

    扩展方法 上图的扩展原型可以等效为如下函数: 需要调用扩展参数也很简单,只需要用参数加点就可以调用,比如我们需要调...

  • kotlin-----集合list、map和set

    1、kotlin中的集合 集合是可变数量(可能为0)的一组条目,kotlin标准库提供一个整套用于集合管理的工具,...

  • kotlin-----遍历数组的几种方式

    都有注释,就不多哔哔了。

  • kotlin-----理解kotlin中的泛型和注解

    一、泛型 泛型是什么? 泛型是程序设计语言的一种特性。允许程序员在强类型程序设计语言中编写代码时定义一些可变部分,...

  • 方法,方法,方法。

    解决问题的方法。

  • indexedDB方法封装

    方法一 方法二 方法三 方法四 方法五 方法六 方法七 方法八 方法九 方法十 方法十一 可以通过es6的方法去全部导出

  • 数组去重的七种方法

    方法一 方法二 方法三 方法四 方法五 方法六 方法七

  • 关于javascript常见数组方法

    push方法 pop方法 unshift方法 shift方法 concat方法 slice方法 splice方法 ...

网友评论

      本文标题:kotlin-----方法

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