gpt4 book ai didi

kotlin - 是否可以编写 "double"扩展方法?

转载 作者:行者123 更新时间:2023-12-01 01:44:34 29 4
gpt4 key购买 nike

在 Kotlin 中,可以这样写

class A {
fun B.foo()
}

然后例如写 with (myA) { myB.foo() } .

是否可以将其写为 A 上的扩展方法? , 反而?我的用例正在编写
with (java.math.RoundingMode.CEILING) { 1 / 2 }

我想返回 1 ,重点是我想添加 operator fun Int.div(Int)RoundingMode .

最佳答案

不,这是不可能的。 operator div必须有Int作为接收者。

您也不能添加 RoundingMode作为接收器,因为只能有单一功能的接收器。

但是,您可以做的是使用 Pair<RoundingMode, Int>作为接收者:

operator fun Pair<RoundingMode, Int>.div(i: Int): BigDecimal =
BigDecimal.valueOf(second.toLong()).divide(BigDecimal.valueOf(i.toLong()), first)

with(RoundingMode.CEILING) {
println((this to 1) / 2) // => 1
}

关于kotlin - 是否可以编写 "double"扩展方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52192501/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com