美文网首页我爱编程
Kotlin 函数2 - 中缀函数

Kotlin 函数2 - 中缀函数

作者: ChenME | 来源:发表于2018-07-26 11:34 被阅读104次

Kotlin 函数2 - 中缀函数


如果一个函数只有一个参数,且用 infix 修饰,那么这个函数就是中缀函数

  • 提到中缀表达式,想到之前看到的一个例子,就是求两个集合的交集

[1, 2, 3, 4, 5, 6] ∩ [4, 5, 6, 7, 8, 9, 0] 的结果就是 [4, 5, 6],就拿这个例子来说明中缀表达式

  1. 首先对 List 集合添加一个扩展方法 getIntersection(), 用来求两个集合的交集
fun <T> List<T>.getIntersection(other: List<T>): List<T> {
    val result = ArrayList<T>()
    forEach {
        if (other.contains(it)) {
            result.add(it)
        }
    }
    return result
}
  1. 来调用一下试试
var list1 = arrayOf(1, 2, 3, 4, 5, 6)
var list2 = arrayOf(4, 5, 6, 7, 8, 9, 0)
var result = list1.toList().getIntersection(list2.toList())
result.forEach { print("$it, ") } // 4, 5, 6,
  1. 与想象中的一样,如愿所偿的拿到了正确的结果。
  • 但是能不能像数学运算式子一样,将 list1.toList().getIntersection(list2.toList()) 改写的更直观一些,像这样 [1, 2, 3, 4, 5, 6] ∩ [4, 5, 6, 7, 8, 9, 0] 呢?
  • 当然可以,中缀函数刚好帮到我们的忙;
  • fun 前面添加 infix 关键字,然后就可以像数学中的 + - * / 一样使用了。
infix fun <T> List<T>.getIntersection(other: List<T>): List<T> {
    val result = ArrayList<T>()
    forEach {
        if (other.contains(it)) {
            result.add(it)
        }
    }
    return result
}

var result = list1.toList() getIntersection (list2.toList()) // 4, 5, 6,
  1. 看着还是不舒服,在把函数名改一下
infix fun <T> List<T>.n(other: List<T>): List<T> {
    val result = ArrayList<T>()
    forEach {
        if (other.contains(it)) {
            result.add(it)
        }
    }
    return result
}

var result = list1.toList() n (list2.toList()) // 4, 5, 6,

这样在使用的时候是不是更像是在写数学一样呢?

  1. 最后重申一下中缀函数的使用条件
  1. 必须是成员函数或者扩展函数;
  2. 必须只有一个参数;
  3. 参数不能是可变参数或默认参数;

相关文章

  • Kotlin 函数2 - 中缀函数

    Kotlin 函数2 - 中缀函数 如果一个函数只有一个参数,且用 infix 修饰,那么这个函数就是中缀函数 提...

  • Kotlin学习(三)函数

    Kotlin函数 1.函数声明 kotlin中的函数用fun声明 2.中缀符号 满足以下条件(成员函数或者扩展函数...

  • kotlin 中缀函数

    中缀函数,很好玩的亚子。 先说说中缀函数必须满足的三个条件: 仅支持成员函数或扩展函数 参数只能有一个 不得接受可...

  • kotlin中缀函数 to

    二元元组 三元元组 to函数的使用 元组的概念? 元组的使用场景

  • Kotlin-函数和lambda表达式学习笔记

    1.Kotlin函数可以使用中缀表示法来调用,当满足一下条件时: 2.在Kotlin中,调用函数的时候可以使用命名...

  • kotlin开发者大会部分总结

    一.kotlin代码简化 中缀表达式 作用域函数 注意各自使用场景,不要嵌套 扩展函数比如px2dp 比如扩展po...

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

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

  • infix中缀函数

    infix中缀函数

  • 学习内容

    函数 顶层函数 扩展函数 可变函数 局部函数 组件函数 中缀调用 let函数 lambda表达式 表达式 解构声明...

  • Kotlin基础---函数

    《基于Kotlin实战》 1.普通的Java函数 2.Kotlin函数 3.对比Kotlin代码和Java代码 一...

网友评论

    本文标题:Kotlin 函数2 - 中缀函数

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