可通过导入解锁Scala语言关键字?为什么?他们是否被弃用、气馁?

阅读课本,我正在测试这个简单的scala 2.12代码:

var b:ArrayBuffer[Int] = new ArrayBuffer();
b.append(5);
b += (8, 3, 2);

for(i <- 0 to 3 reverse)
  println(b(i));

但我收到了错误消息:

import clause 'import scala.language.postfixOps'
or by setting the compiler option -language:postfixOps.
See the Scaladoc for value scala.language.postfixOps for a discussion
why the feature should be explicitly enabled.
import clause 'import scala.language.postfixOps'
or by setting the compiler option -language:postfixOps.
See the Scaladoc for value scala.language.postfixOps for a discussion
why the feature should be explicitly enabled.

当然,我当时做了想要的导入,它奏效了:

但是通过导入解锁的语言关键字的概念是什么?

隐含地,我已经检查过该for关键字在Scala 中是否立即可用,
并且我认为while和大多数其他人也是如此,

但如果reverse和其他一些不是,这意味着有一个列表...
禁用关键字(???)
但我不知道那个列表,以及为什么它们必须显式激活。

  • 他们不鼓励使用吗?
  • 他们被弃用了吗?
  • 或者处于“早期预览”状态,打算在其中Scala 2.13或以后真正实施,并被认为是不稳定的?

回答

这与关键字无关。import scala.language.postfixOps解锁称为“后缀符号”或“后缀运算符”的语言功能。这使您可以.在“调用目标”和方法名称之间使用空格而不是点 ( )来调用无参数方法。所以而不是写:

(0 to 3).reverse // "reverse" is just a method

您可以执行以下操作:

import scala.language.postfixOps
0 to 3 reverse

正如您所建议的那样,该功能已被弃用,并且不鼓励使用,因为它会导致歧义。有关更多详细信息,请参阅文档和此答案。


以上是可通过导入解锁Scala语言关键字?为什么?他们是否被弃用、气馁?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>