美文网首页
[学习]拥抱kotlin(Infix)

[学习]拥抱kotlin(Infix)

作者: 吴敬悦 | 来源:发表于2021-02-20 18:58 被阅读0次

我遇到了 Infix 函数。尽量一个就是一天,下次找的时候方便。

有了这个函数就相当于自己定义了一种操作,跟自定义操作符差不多,但是又不一样,首先自定义操作符是那些特殊字符,比如 + , -* 等等。C++ 里面有,只不过很久没看了也忘了。 kotlin 这个的命名规范跟变量一样,我自己简单的使用了一下,发现除了写法多了,其他的跟函数相同; Infix 必须满足以下要求:

  1. 必须是成员函数或扩展函数;
  2. 必须有且仅有一个参数;
  3. 参数必须不是可变参数( vararg 修饰)和参数不能有默认值。

先看成员函数的例子

class Learn {
    var learnDay = 0
    infix fun test(learn: Learn): Learn {
        this.learnDay += learn.learnDay
        return this
    }
    fun bufu(learn: Learn): Learn {
        this.learnDay = 0
        return this
    }
}

fun main() {
    val learn1 = Learn()
    learn1.learnDay = 2
    val learn2 = Learn()
    learn2.learnDay = 5
    learn1 test learn2
//    learn1 bufu learn2 这样会提示添加 infix 关键词
    println(learn1.learnDay) // 7
}

除了直接调用 learn1 test learn2 ,仍然可以像函数一样 learn1.test(learn2) 的方式调用;这里所谓的成员函数,也就是在类中的函数;下面看扩展函数:

fun main() {
    infix fun Int.add(digit: Int): Int {
        return this + digit
    }

    println(1 add 2) // 3
}

扩展函数有定义:

Kotlin provides an ability to extend a class with new functionality without having to inherit from the class or use design patterns such as Decorator. This is done via special declarations called extensions.

For example, you can write new functions for a class from a third-party library that you can't modify. Such functions are available for calling in the usual way as if they were methods of the original class. This mechanism is called extension functions. There are also extension properties that let you define new properties for existing classes.

大体的函数就是在不继承的情况下,也能动态的给类添加函数,比如我们像让 ArrayList 拥有找出第二大值的函数,但是呢默认 ArrayList 类并没有提供,怎么办, java 中的做法就是编写一个类,然后继承 ArrayList 这个类,然后再编写,想想就很麻烦,但是 kotlin 就很方便。扩展函数就有扩展属性,扩展属性跟扩展方法相似,但是今天说的这个不能修饰属性。没想到在学习的时候学到了新的东西,下次就记录扩展函数。

相关文章

  • [学习]拥抱kotlin(Infix)

    我遇到了 Infix 函数。尽量一个就是一天,下次找的时候方便。 有了这个函数就相当于自己定义了一种操作,跟自定义...

  • Infix:from the office web of Kot

    The use of infix:from the office web of Kotlin

  • Kotlin for android学习九:函数与lambda表

    前言 kotlin官网和kotlin教程学习教程的笔记。 一、函数使用 1.中缀标记法(infix notatio...

  • Kotlin学习 7 -- infix函数

    本篇文章主要介绍以下几个知识点:使用 infix 函数构建更可读的语法内容参考自第一行代码第3版 在前面的学习中,...

  • Kotlin 学习笔记(一)infix函数

    什么是 infix 函数 Kotlin允许在不使用括号和点号的情况下调用函数,那么这种函数被称为 infix函数。...

  • Kotlin inline & infix

    inline 内联函数 调用内联函数时,在编译期间,被定义的内联函数体的代码将被拷贝至每个调用方法体内。 优点: ...

  • kotlin infix函数

    说明 kotlin 我们平常初始化map集合时,就会用到to关键词,里面涉及到infix函数 根据上面写法,我们自...

  • 三篇文章带你快速入门 Kotlin(下)

    三篇文章带你快速入门 Kotlin(下) infix函数 我们前面介绍mapOf函数,A to B 这样的语法结构...

  • Idioms

    kotlin习惯用法 创建POJO 函数默认值 lambda表达式 遍历map infix 函数 然后就可以通过类...

  • [学习]拥抱kotlin(七)

    我发现我在平时的使用中,连数组,集合很多我都非常懵逼,明明在 java 或 javascript 中都是很容易的。...

网友评论

      本文标题:[学习]拥抱kotlin(Infix)

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