2-Scala语法

    xiaoxiao2021-09-02  85

    数据类型

    Scala有7种数值类型:Byte、Char、Short、Int、Long、Float和Double,以及2种非数值类型:Boolean和Unit(只有一个值“()”,相当于java和c++中的void,即空值)。 这些类型都是抽象的final类(不能使用new新建,也不能被继承),在scala包中定义,是对java基本数据类型的包装,因此与java基本数据类型有相同的长度。同时,scala还提供了RichInt、RichChar等等,它们分别提供Int、Char等所不具备的便捷方法。 Scala沿用了java.lang包中的String。在scala中,常量也称作字面量,字符串字面量由双引号包含的字符组成,同时scala提供了另一种定义字符串常量的语法——原始字符串,它以三个双引号作为开始和结束,字符串内部可以包含无论何种任意字符。

    变量

    Scala有两种变量:val和var。 val如同java中的final变量,var如同java中的非final变量。由于scala是完全面向对象的,因此val和var只是声明了对象的引用是不可变的还是可变的,并不能说明引用指向的对象的可变性。声明变量的同时需要初始化之,否则该变量就是抽象的。如果不指定变量的类型,编译器会从初始化它的表达式中推断出其类型。 例子:

    val answer = “yes” val answer, message: String = “yes”

    标识符

    scala标识符有四种形式:字母数字标识符、操作符标识符、混合标识符、字面量标识符。 (1)字母数字标识符:跟其他语言类似,由字母、数字和下划线组成,但需注意美元字符被保留作为scala编译器产生的标识符之用,不要随意使用。 (2)操作符标识符:由一个或多个操作符字符组成。scala编译器将在内部“粉碎”操作符标识符以转换成合法的内嵌“$”的java标识符。若你想从java代码中访问这个标识符,就应该使用这种内部表示方式。 (3)混合标识符:由字母数字以及后面跟着的下划线和一个操作符标识符组成。如unary_+定义了一个前缀操作符“+”。 (4)字面量标识符:是用反引号…包含的任意字符串,scala将把被包含的字符串作为标识符,即使被包含字符串是scala的关键字。例如:你可以使用Thread.yield()来访问java中的方法,即使yield是scala的关键字。

    操作符

    Scala的操作符和在java和C++中的预期效果是一样的,但注意scala并不提供++、–操作符。不过scala中的操作符实际上都是方法,任何方法都可以当作操作符使用,如 a + b 相当于 a.+(b)。 注意:对于不可变对象(注:对象的不可变并不是说它的引用变量是val的),并不真正支持类似于“+=”这样以“=”结尾的操作符(即方法)。

    快表达式与赋值

    在Scala中,{}块包含一系列表达式,其结果也是一个表达式,块中最后一个表达式的值就是其值。 在scala中,赋值语句本身的值是Unit类型的。因此如下语句的值为“()”:

    {r = r * n; n -= 1}

    正是由于上述原因,scala中不能多重赋值,而java和c++却可以多重赋值。因此,在scala中,如下语句中的x值为“()”:

    x = y = 1
    转载请注明原文地址: https://ju.6miu.com/read-677382.html

    最新回复(0)