我刚刚发现了一些scala代码,它有一个奇怪的类名:
class `This is a cool class` {}
Run Code Online (Sandbox Code Playgroud)
和方法名称:
def `cool method` = {}
Run Code Online (Sandbox Code Playgroud)
我们可以使用句子作为类或方法名称!
它对于单元测试非常酷且有用:
class UserTest {
def `user can be saved to db` {
// testing
}
}
Run Code Online (Sandbox Code Playgroud)
但为什么我们可以做到这一点?怎么理解呢?
Rex*_*err 15
出于互操作性的目的,存在此功能.如果Scala有一个保留字(with
例如),那么你仍然可以通过使用反引号来引用其他语言中使用它作为方法或变量或其他任何东西的代码.
由于没有理由禁止几乎任意的字符串,因此您可以使用几乎任意的字符串.
正如@Rex Kerr回答的那样,这个功能是为了互操作性.例如,
要调用java方法,
Thread.yield()
Run Code Online (Sandbox Code Playgroud)
你需要写
Thread.`yield`()
Run Code Online (Sandbox Code Playgroud)
因为yield
是scala中的关键字.
Scala语言规范:
有三种形成标识符的方法.首先,标识符可以以字母开头,后面可以是任意字母和数字序列.其后可以是下划线'_'字符和由字母和数字或运算符字符组成的另一个字符串.其次,标识符可以以操作符字符开头,后跟任意操作符字符序列.前两种形式称为普通标识符.最后,标识符也可以由后引号之间的任意字符串形成(主机系统可以对哪些字符串对于标识符合法施加一些限制).然后,标识符由除反引号本身之外的所有字符组成.
归档时间: |
|
查看次数: |
364 次 |
最近记录: |