为什么这个 Kotlin 方法有封闭的反引号?

Why does this Kotlin method have enclosing backticks?

下面代码段中的反引号有什么用?

为什么要在 fun is(amount:Int ):Boolean { ... } 周围添加它们?

verifier.`is`(amount)

它允许您调用名称为 Kotlin 关键字的 Java 方法。如果您省略反引号,它将不起作用。

因为is是Kotlin的保留关键字。由于 Kotlin 应该与 Java 互操作并且 is 是 Java 中的有效方法(标识符)名称,反引号用于转义该方法,以便它可以用作方法而不会将其混淆为关键字。没有它,它将无法工作,因为它是无效的语法。

这是突出显示的 in the Kotlin documentation:

Escaping for Java identifiers that are keywords in Kotlin

Some of the Kotlin keywords are valid identifiers in Java: in, object, is, etc. If a Java library uses a Kotlin keyword for a method, you can still call the method escaping it with the backtick (`) character

foo.`is`(bar)

is 在 Kotlin 保留列表中 words 要为 function/class 名称使用 Kotlin 保留字(例如 isobject),您应该将其包装成反引号

Some of the Kotlin keywords are valid identifiers in Java: in, object, is, etc. If a Java library uses a Kotlin keyword for a method, you can still call the method escaping it with the backtick (`) character

https://kotlinlang.org/docs/reference/java-interop.html

反引号是 "workaround" 允许您调用名称代表 Kotlin 关键字的方法。

kotlinlang:

Some of the Kotlin keywords are valid identifiers in Java: in, object, is, etc. If a Java library uses a Kotlin keyword for a method, you can still call the method escaping it with the backtick (`) character

对测试有用

反引号在测试长函数名时非常有用:

@Test
fun `adding 3 and 4 should be equal to 7`() {
    assertEquals(calculator.add(3, 4), 7)
}

这使函数名称更具可读性。我们可以在函数名中添加空格和其他特殊字符。但是,请记住只在测试中使用它,它违反了常规代码的 Kotlin 编码约定。