包含在``:class`中的酷类和方法名称这是一个很酷的类`{}?

时间:2012-05-29 11:21:48

标签: scala

我刚发现一些scala代码有一个奇怪的类名:

 class `This is a cool class` {}

和方法名称:

 def `cool method` = {}

我们可以使用句子作为类或方法名称!

这对于单元测试来说非常酷且有用:

class UserTest {
   def `user can be saved to db` {
      // testing
   }
}

但为什么我们能做到这一点?如何理解?

5 个答案:

答案 0 :(得分:15)

此功能的存在是为了实现互操作性。如果Scala有一个保留字(例如with),那么你仍然可以通过使用反引号来引用其他语言中使用它作为方法或变量或其他任何东西的代码。

由于没有理由禁止几乎任意的字符串,你可以使用几乎任意的字符串。

答案 1 :(得分:7)

正如@Rex Kerr所述,此功能适用于互操作性。例如,

要调用java方法,

Thread.yield()

你需要写

Thread.`yield`()

因为yield是scala中的关键字。

答案 2 :(得分:5)

Scala语言规范:

  

有三种方法可以形成标识符。首先,标识符可以   以一个字母开头,后面跟着一个任意序列   字母和数字。这可能后跟下划线'_'字符   和另一个由字母和数字组成的字符串   操作员角色。其次,标识符可以从操作员开始   字符后跟任意一系列操作符。   前两种形式称为普通标识符。最后,一个   标识符也可以由任意字符串组成   反引号(主机系统可能会对其施加一些限制   字符串对于标识符是合法的)。然后标识符由   除反引号之外的所有字符。

答案 3 :(得分:2)

包含在`中的字符串是Scala中的有效标识符,不仅是类名和方法,还包括函数和变量。

答案 4 :(得分:1)

对我来说,只是解析器和编译器的构建方式能够实现,因此Scala团队实现了它。

我认为编码人员能够为函数而不是getThisIncredibleItemget_this_other_item提供真实姓名可能会很酷。

感谢您的问题,这些问题让我了解了Scala的新内容!