Scala学习——基础

Posted 后端故事

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala学习——基础相关的知识,希望对你有一定的参考价值。

Scala学习——基础

介绍

Scala combines object-oriented and functional programming in one concise, high-level language. Scala's static types help avoid bugs in complex applications, and its JVM and javascript runtimes let you build high-performance systems with easy access to huge ecosystems of libraries.

这是官网上对于Scala的描述,简而言之就是一门运行在JVM之上,并且结合函数式和面向对象的编程语言。那么究竟是怎样的呢,让我们来一探究竟。

开发环境

由于Scala是运行在JVM之上的,所以在安装Scala环境之前,我们需要先安装JDK。你可以使用IDE,也可以使用命令行,具体过程可以参考连接[1]。 如果你使用的是命令行,那么在配置完成之后,输入Scala出现如下的界面,则表示安装成功(下图为Windows环境,其他平台也是类似)

如果你使用IDEA,那么你需要安装Scala插件,如下所示:

Scala学习——基础

安装完成后还需要在设置里面做如下的配置:

当你一切都配置完成之后,就可以写一个Hello World来测试一下啦:

声明值和变量

在REPL中(所谓REPL是指,Scala解释器读到一个表达式,对他进行求值,将它打印出来,接着再继续读下一个表达式。这个过程被称作“读取-求值-打印”循环,read-eval-print-loop),会自动生成res0,res1这些变量名称来保存结果,但是我们也可以自己定义变量名。在Scala中定义一个变量我们可以使用关键字val或者var,区别是,val定义的变量是不可变的,我们无法改变他的值,而var定义的变量是可以变的。

scala> val result = 8 * 5 +2result: Int = 42

如果我们尝试改变result的值,则会报错:

scala> result = 0<console>:12: error: reassignment to val result = 0 ^

但是var则没有这个限制:

scala> var number = 2 * 3 + 1number: Int = 7
scala> number = 0number: Int = 0

那么REPL自动生成的res是可变还是不可变的呢,我们可以验证一下:

scala> 1 + 1res0: Int = 2
scala> res0 = 0<console>:12: error: reassignment to val res0 = 0 ^

可以看到res0是不可变的。同时可以注意到,在Scala中,变量的类型写在变量名的后面,这也是和Java,C++的一个区别,需要注意。但是一般我们定义变量的时候可以不写类型,Scala解释器会自动推断变量的类型。

常用类型

和Java一样,Scala也有7个基本类型:Byte, Char, Short, Int, Long, Float, Double,以及一个Boolean类型。与Java不同的是,这些类型也是类。Scala并不刻意区分基本类型和引用类型,我们也可以对一个数字调用方法,如:

scala> 1.toString()res1: String = 1

在Scala中也不需要包装类型,基本类型和包装类型之间的转换是Scala编译器的工作。

算术和操作符重载

在Scala中,算术操作符实际上也是方法,例如:

a + b

和下面的方法调用的效果是一样的:

a.+(b)

这里的+是方法名,b是参数。从上面我们也可以看出,当一个方法只带有一个参数的时候,我们可以不写括号,并在中间加一个空格来简写,例如:

1.to(10)

可以简写成:

1 to 10

和Java和C++有一个显著的不同的是,Scala并不提供++--操作符,我们可以使用+=1或者-=1来代替,因为Int在Scala中是不可变的。

关于方法调用

在Scala中,如果一个方法没有参数,那么我们可以不写括号,如:

"hello".sort()

和下面的写法是等价的:

"hello".sort

在Scala中,如果一个无参的方法并不修改对象,那我们默认就不写括号。

References

[1] 连接: https://docs.scala-lang.org/getting-started.html


以上是关于Scala学习——基础的主要内容,如果未能解决你的问题,请参考以下文章

Scala学习之路----基础入门

Spark基础-scala学习

Scala基础学习

为什么Scala是可扩展的?

2021年大数据常用语言Scala:基础语法学习 方法

2021年大数据常用语言Scala:基础语法学习 字符串