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插件,如下所示:
安装完成后还需要在设置里面做如下的配置:
当你一切都配置完成之后,就可以写一个Hello World来测试一下啦:
声明值和变量
在REPL中(所谓REPL是指,Scala解释器读到一个表达式,对他进行求值,将它打印出来,接着再继续读下一个表达式。这个过程被称作“读取-求值-打印”循环,read-eval-print-loop),会自动生成res0
,res1
这些变量名称来保存结果,但是我们也可以自己定义变量名。在Scala中定义一个变量我们可以使用关键字val
或者var
,区别是,val定义的变量是不可变的,我们无法改变他的值,而var定义的变量是可以变的。
scala> val result = 8 * 5 +2
result: Int = 42
如果我们尝试改变result
的值,则会报错:
scala> result = 0
<console>:12: error: reassignment to val
result = 0
^
但是var则没有这个限制:
scala> var number = 2 * 3 + 1
number: Int = 7
scala> number = 0
number: Int = 0
那么REPL自动生成的res是可变还是不可变的呢,我们可以验证一下:
scala> 1 + 1
res0: 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学习——基础的主要内容,如果未能解决你的问题,请参考以下文章