Kotlin简明学习,infix函数

我们在声明一个map的时候通常可以用下面的代码:

val map = mapOf(1 to "one", 2 to "two", 3 to "three")

上面这段代码一看有个地方很奇怪,就是这个to是什么?在Java中没有见过这种写法。

看下mapOf的源码:

public fun <K, V> mapOf(vararg pairs: Pair<K, V>): Map<K, V> = if (pairs.size > 0) linkedMapOf(*pairs) else emptyMap()

从上面的源码可以看到mapOf需要一个可变参数,类型是Pair。我们再按住Ctrl键,点击to关键字,看下to的源码定义。如下:

/**
 * Creates a tuple of type [Pair] from this and [that].
 *
 * This can be useful for creating [Map] literals with less noise, for example:
 * @sample samples.collections.Maps.Instantiation.mapFromPairs
 */
public infix fun <A, B> A.to(that: B): Pair<A, B> = Pair(this, that)

发现to其实也是个方法,不过方法前面加了个关键字infix。这就是我们所要说的infix函数。

infix函数需要几个条件:
- 只有一个参数
- 在方法前必须加infix关键字
- 必须是成员方法或者扩展方法

举例

我们在InfixTest.kt文件中加入如下代码:

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

调用这个infix函数,并打印

println(100 add 200)

输出结果:

I/System.out: 300

上面这个列子是扩展函数实现的情况,下面举一个成员函数的例子:

我们定义一个Account类:

class Account {
    var balance = 100.0

    infix fun add(amount: Double) : Unit {
        this.balance = balance + amount
    }
}

上面的代码可以看到有个infix函数

调用并打印:

val  account = Account()
account add 100.00
print(account.balance)

输出的结果是200.00

总结:

这篇文章就是给大家演示了下infix函数,它没有给Kotlin带来新的什么特性,不想扩展函数,但是infix函数,增加了可读性,让我们的代码更易读懂。

Kotlin简明学习—文章列表

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值