Kotlin初级- - - 基础函数.md

Posted Hankkin_Coding

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kotlin初级- - - 基础函数.md相关的知识,希望对你有一定的参考价值。

函数的声明和使用

Kotlin中函数的声明使用关键字 fun
格式为:可见性修饰符 fun 函数名(参数名 :类型):返回值

例如:

fun main()
    

  • 上面的例子没有可见性修饰符,因为Kotlin中默认为public
  • 函数没有返回值时可以省略

函数的作用范围

1.成员函数

成员函数是指在类或对象中的内部函数
例如:

class Demo
    fun main()

2.本地函数

本地函数允许把小函数声明在其他函数内部,甚至可以多层嵌套

例如

fun printArea(w: Int,h: Int)
    fun area(w: Int,h: Int)
        return w * h
    
    val area = area(w,h)
    print(area)

area函数在printArea外部无效,它只服务于printArea。这在实现一个大函数时隐藏实现的细节是非常有用的。除此之外,本地函数还有一个好处就是可以访问嵌套住函数中的变量,例如:

fun printArea(w: Int,h: Int)
    fun area() = w * h
    
    val area = area(w,h)
    print(area) 

3.顶层函数

所谓顶层函数,即这些函数不属于任何源码文件的小集团(class,对象,interface),而是直接定义在源码文件中的。他们在所有小集团的层级之上。
在定义通用性的工具栏和帮助类函数时非常有用,源码的各个部分可能都需要用它。

命名参数和默认参数

1.命名参数

可以在调用函数时把参数的名字写出来。好处是一旦参数众多,调用时会看的比较清楚,代码可读性高。

例如:

fun printPerson(p: Person)
    print(p.match(age = 20,
    name = "hankkin",
    nickname = "xxx",
    sex = "男",
    weight = "120"))

当然在AS中,默认会显示参数的hint,很方便了,所以一般很少用。

2.默认参数

在Kotlin中可以定义一个或者多个默认参数,在被调用时如果不指定,则使用默认值。

fun valueOf(unscaledVal: Int = 0,scale: Int,prec: Int = 1)

函数操作符

函数操作符用了一个符号来表示。Kotlin中的函数有很多内置的操作符。例如array[1],[1]就相当于数组的.get(1)方法

1.操作符重载

Kotlin允许为预定义操作符提供自定义的实现。这些操作符具有固定符号表示(如+ - * /),固定的优先级precedence。有相应的成员函数member function或扩展函数extension function,重载操作符的函数必需要用operator修饰符标记

2.基础操作符

操作函数名
!xx.not()
-yy.unaryMinus()
+zz.unaryPlus()
a…ba…rangeTo(b)
c + dc.plus(d)
e - fe.minus(f)
g * hg.times(h)
m % nm.mod(n)
i/ji.div(j)

函数扩展

1.扩展函数的优先级

扩展函数不能重载类或者接口中已经定义的函数。如果你定义了一个与既有函数一摸一样的扩展函数,名字一样,参数一样,这个扩展时无效的。

2.扩展函数的作用范围

通常我们用顶层函数做扩展,但也可以在类中做扩展

3.扩展函数在子类中的重载

子类中可以重载成员扩展函数,前提是这个类是open,即可重载的。在这种情况下,子类的函数接受者类型是由运行时的实例决定的,而扩展的接受者类型始终时编译时就确定的,也就是静态的

4.infix中缀函数

中缀函数跟赋值操作符有点像,不同的是名称可以是任意的。例如Kotlin自带的to函数,可以把两个变量凑成一个二元祖。Kotlin中可以把成员函数定义成中缀。因为中缀函数是二元的,必须有2个参数,第一个很显然是实例,第二个是函数的参数

以上是关于Kotlin初级- - - 基础函数.md的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin初级- - - 字符串和字符.md

Kotlin初级- - - 空安全.md

Kotlin初级- - - 空安全.md

Kotlin初级- - - 空安全.md

Kotlin初级- - - 空安全.md

Kotlin初级- - - 字符串和字符.md