前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kotlin初级(3)- - - 基础函数.md

Kotlin初级(3)- - - 基础函数.md

作者头像
Hankkin
发布2018-09-30 10:45:31
4420
发布2018-09-30 10:45:31
举报
文章被收录于专栏:Android干货园

函数的声明和使用

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

例如:

代码语言:javascript
复制
fun main(){
    
}
  • 上面的例子没有可见性修饰符,因为Kotlin中默认为public
  • 函数没有返回值时可以省略

函数的作用范围

1.成员函数

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

代码语言:javascript
复制
class Demo{
    fun main(){}
}

2.本地函数

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

例如

代码语言:javascript
复制
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。这在实现一个大函数时隐藏实现的细节是非常有用的。除此之外,本地函数还有一个好处就是可以访问嵌套住函数中的变量,例如:

代码语言:javascript
复制
fun printArea(w: Int,h: Int){
    fun area() = w * h
    
    val area = area(w,h)
    print(area) 
}

3.顶层函数

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

命名参数和默认参数

1.命名参数

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

例如:

代码语言:javascript
复制
fun printPerson(p: Person){
    print(p.match(age = 20,
    name = "hankkin",
    nickname = "xxx",
    sex = "男",
    weight = "120"))
}

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

2.默认参数

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

代码语言:javascript
复制
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.基础操作符

操作

函数名

!x

x.not()

-y

y.unaryMinus()

+z

z.unaryPlus()

a…b

a…rangeTo(b)

c + d

c.plus(d)

e - f

e.minus(f)

g * h

g.times(h)

m % n

m.mod(n)

i/j

i.div(j)

函数扩展

1.扩展函数的优先级

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

2.扩展函数的作用范围

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

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

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

4.infix中缀函数

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年09月20日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 函数的声明和使用
  • 函数的作用范围
    • 1.成员函数
      • 2.本地函数
        • 3.顶层函数
        • 命名参数和默认参数
          • 1.命名参数
            • 2.默认参数
            • 函数操作符
              • 1.操作符重载
                • 2.基础操作符
                • 函数扩展
                  • 1.扩展函数的优先级
                    • 2.扩展函数的作用范围
                      • 3.扩展函数在子类中的重载
                        • 4.infix中缀函数
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档