本文介绍了关于“Scala的标识符有哪些方法?”很多人在实际案例操作中都会遇到这样的困难。接下来,让边肖带领大家学习如何应对这些情况!希望大家认真阅读,学点东西!
Scala中有两种形式的标识符:字母数字和运算符。Scala在编写标识符时有非常灵活的规则。除了这两个,你会看到还有另外两个。
字母数字标识符:字母数字标识符以字母或下划线开头,后面可以是字母、数字或下划线。“$”字符也被视为字母,但它被保留为Scala编译器生成的标识符。用户程序中的标识符不应包含“$”字符,尽管它可以被编译;但是,这可能会导致名称与Scala编译器生成的标识符冲突。
Scala遵循Java的驼峰风格,这种风格被称为驼峰风格:camel case,因为标识符由带有大写字母的嵌入式单词组成。习俗,如toString和HashSet。虽然下划线在标识符中是合法的,但它在Scala程序中并不常用,部分原因是它与Java一致,还因为它在Scala代码中有许多其他非标识符的用法。因此,* * *避免使用像to_string、___ init _、或name_这样的标识符。字段、方法参数、局部变量和函数的驼峰名称应该以小写字母开头,如length、flatMap和s。类和特性的驼峰名称应该以大写字母开头,如BigInt、List和UnbalancedTreeMap。
注意
在标识符末尾使用下划线的一个结果是,例如,如果您试图编写一个类似“val name _ : int=1”,你会收到一个编译器错误。编译器会认为你正常是定义一个叫做“name_:”的变量。要让它编译通过,你将需要在冒号之前插入一个额外的空格,如:“val name _ 3360 int=1”。"”的定义
Scala和Java的区别在于常量名。在Scala中,常量这个词和val不一样。尽管val在初始化后保持不变,但它仍然是一个变量。例如,方法参数是val,但是每次调用方法时,这些val可以表示不同的值。而常数更持久。比如斯卡拉。数学。圆周率被定义为非常接近实数的双精度值,它代表圆与其直径的比率。这个值不太可能改变,所以圆周率显然是一个常数。也可以用常量给代码中一些用作幻数的值起个名字:文本值没有解释力,如果出现在多个地方,那就极其糟糕了。您可能还需要定义用于模式匹配的常数。用例将在第15.2节中描述。在Java中,常量名称通常都是大写的,像MAX_VALUE或pi这样的单词用下划线隔开。在Scala中,习惯是只有* * *字母必须大写。因此,Java风格的常量名称,比如X_OFFSET,也可以用在Scala中,但是Scala的惯例是常量也使用驼峰式的,比如XOffset。
操作员标识符:操作员标识符由一个或多个操作员字符组成。操作符字符如,可打印的ASCII字符,~或#。更准确地说,运算符字符属于数学符号(Sm)或其他符号(So)的Unicode集合,或者不是字母、数字、括号、方括号、大括号、单引号或双引号的7位ASCII字符,或者下划线、句点、分号、冒号和向后字符。以下是操作员标识符的一些示例:
:-
Scala编译器将在内部“粉碎”运算符标识符,将其转换为嵌入“$”的合法Java标识符。例如,标识符:-将在内部表示为$冒号$减去$更大。如果您想从Java代码中访问这个标识符,您应该使用这个内部表达式。
Scala中的运算符标识符可以任意长,所以Java和Scala之间有一些小的区别。在Java中,输入的x -y会被分成四个词法符号,所以写X-Y没什么区别,在Scala中,-会被拆分为一个标识符得到X-Y,如果想得到* * *解释,应该在''和'-'字符之间加一个空格。这在实际应用中大概不会是问题,因为很少有人在用Java写x -y的时候不注意加空格或者括号。
混合标识符:混合标识符由字母数字字符组成,后跟下划线和运算符标识符。例如,一元_用作定义一元“”运算符的方法名。或者,使用myvar_=作为方法名来定义赋值运算符。总之,混合标识符格式myvar_=由Scala编译器生成,以支持属性:property;第十八章进一步解释。
文本标识符:文字标识符是用反引号括起来的任何字符串.`.例如:
` x` ` clinit` `yield `
这个想法是,您可以将运行时识别的任何字符串放在引号后面作为标识符。总是结果Scala标识符。即使后引号中的名称是Scala保留字,此规则也有效。在Java的Thread类中访问静态yield方法是一个典型的用例。你不能写Thread.yield(),因为yield是Scala的保留字。但是,您仍然可以在后面的引号中引用该方法的名称,例如Thread.`yield()。
“Scala标识符的形式是什么?”感谢阅读。如果你想了解更多的行业,可以关注网站。边肖将为您输出更多高质量的实用文章!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/140956.html