gpt4 book ai didi

scala - 需要澄清 Scala 文字标识符(反引号)

转载 作者:行者123 更新时间:2023-12-02 06:16:51 25 4
gpt4 key购买 nike

阅读 Scala 编程第二版,我发现了这一点:

文字标识符“这个想法是,您可以将运行时接受的任何字符串作为反引号之间的标识符”

我不完全确定为什么要使用这个?书中给出了访问Java Thread类中的静态yield方法的用例。

因此,在 Scala 中,yield 是一个保留字,如果我使用带反引号的 Yield,

Thread.`yield`()

它会忽略Scala的yield并让我访问Java的Thread类的方法yield?

提前谢谢您。

最佳答案

正是如此。使用反引号,您或多或少可以为字段标识符指定任何名称。事实上,你甚至可以说

val ` ` = 0

它定义了一个名为的变量(一个空格字符)。

标识符的字面定义在两种情况下很有用。第一种情况是,Scala 中已经存在同名的保留字,而您需要使用一个不关心该保留字的 Java 库(当然,为什么要关心它)。

另一个用例带有 case 语句。约定是小写名称指匹配变量,而大写名称指来自外部范围的标识符。所以,

val A = "a"
val b = "b"
"a" match {
case b => println("b")
case A => println("A")
}

打印“b”(如果编译器足够愚蠢,不会因说case A无法访问而失败)。如果要引用原来定义的val b,需要使用反引号作为标记。

"a" match {
case `b` => println("b")
case A => println("A")
}

打印“A”

添加 最近的问题 method with angle brackets (<>) 有一个更高级的用例其中需要反引号来让编译器消化 setter 方法的代码(它本身使用一些“神奇”语法)。

关于scala - 需要澄清 Scala 文字标识符(反引号),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6576594/

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