什么时候应该使用加号、减号、时间函数而不是 Kotlin 中的运算符?

not*_*Dev 4 kotlin

我想不出使用 Kotlin 内置加号、减号、时间等函数会返回与仅使用相应运算符(+、-、*)不同的结果的情况。您为什么要在 Kotlin 代码中使用这些函数?

Ten*_*r04 6

以防万一您不知道,这些是运算符重载。命名函数是定义运算符功能的方式。

有使用命名版本的情况。函数调用不注意运算符优先级,如果将它们链接起来,则按顺序计算。

val x = 1
val y = 2
val z = 3

println(x + y * z)          // equivalent to 1 + (2 * 3) -> 7
println(x.plus(y).times(z)) // equivalent to (1 + 2) * 3 -> 9
Run Code Online (Sandbox Code Playgroud)

如果您有很多嵌套的括号,这可能比使用运算符更清楚,这取决于您正在执行的数学类型的上下文。

result = ((x - 7) * y - z) * 10

// vs

result = x.minus(7).times(y).minus(z).times(10)
Run Code Online (Sandbox Code Playgroud)

它并不真正适用于像这样的基本代数,但您可能拥有带有运算符重载的类,其中的逻辑可以更容易地通过顺序方法进行推理。


Paw*_*wel 6

通过显式声明函数名称,您可以对可为空的数字执行安全调用,而这是无法使用运算符完成的。

例如:

fun doubleOrZero(num: Int?) : Int {
    return num?.times(2) ?: 0
}
Run Code Online (Sandbox Code Playgroud)