欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Scala基础-01-Scala环境安装及基础语法(变量,函数)

程序员文章站 2024-02-22 21:21:58
...

Scala简介

Scala是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Java虚拟机),并兼容现有的Java程序。Scala是编写大数据框架Spark的语言,随着大数据的兴起,越来越多的人开始学习Scala

Scala语言的优点

优雅:这是框架设计师第一个要考虑的问题,框架的用户是应用开发程序员,API是否优雅直接影响用户体验。
速度快:Scala语言表达能力强,一行代码抵得上Java多行,开发速度快;Scala是静态编译的,所以和JRuby,Groovy比起来速度会快很多。
能融合到Hadoop生态圈:Hadoop现在是大数据事实标准,Spark并不是要取代Hadoop,而是要完善Hadoop生态。JVM语言大部分可能会想到Java,但Java做出来的API太丑,或者想实现一个优雅的API太费劲。

Scala环境安装

1.安装JDK

Scala是运行在Java虚拟机JVM上的一种编程语言,所以安装Scala编译器前要先安装JDK

2.安装Scala编译器

打开Scala官网,进入Download页面
Scala基础-01-Scala环境安装及基础语法(变量,函数)
由于现有的Spark项目一般都用的比较成熟的Scala2.10.x版本,所以为了方便日后学习Spark,我选择了下载较老的2.10版本,在Other Releases中选择2.10版

Scala基础-01-Scala环境安装及基础语法(变量,函数)

Windows用户可以选择.msi后缀的文件来安装Scala,可以一键安装不用自己手动配置环境变量
Scala基础-01-Scala环境安装及基础语法(变量,函数)

IDEA安装Scala插件

安装完Scala编译器后还需要给IDE安装对应的插件才能使用Scala,我是用的IDE是IDEA

打开IDEA插件页,File->Setting->Plugins,搜索Scala,下载安装,如果速度太慢,也可以自己去Jetbrains插件官网下载然后采用本地安装

Jetbrains官网的Scala插件版本
Scala基础-01-Scala环境安装及基础语法(变量,函数)
红圈中选项进行本地安装
Scala基础-01-Scala环境安装及基础语法(变量,函数)

一.Scala变量

Scala是强类型语言,和Java一样,有7种数值类型Byte、Char、Short、Int、Long、Float和Double(无包装类型)和一个Boolean类型

Scala变量的定义

Scala编译器会自动推断变量的类型(和Python一样),也可以指定类型

有两种方法定义变量,val和var,val定义的变量是不可变的,相当于java中的final修饰(比java简洁太多),var定义的变量是可变的,使用中尽可能多使用val定义变量

object VariableDemo {
  def main(args: Array[String]) {
    //定义常量
    val i = 1
    //定义变量
    var s = "hello"
    //自己指定变量类型,不指定Scala编译器会自动推断变量的类型
    val str: String = "itcast"
  }
}

二.Scala表达式

Java中的各种控制语句在Scala中都简化为表达式,包括条件表达式,循环表达式等。Scala表达式都有返回值,scala中有个Unit类,写做(),相当于Java中的void

2.1 条件表达式

Scala条件表达式的一般形式:

//如果x>A,则将A赋值给a变量,否则将B赋值给a变量
val a = if (x > A) A else B

条件表达式的其他使用示例:

object ConditionDemo {
  def main(args: Array[String]) {
    val x = 1

    //判断x的值,将结果赋给y
    val y = if (x > 0) 1 else -1
    println(y)

    //支持混合类型表达式,即可以返回不同类型的变量值
    val z = if (x > 1) 1 else "error"
    println(z)

    //缺省else,相当于if (x > 2) 1 else ()
    val m = if (x > 2) 1
    println(m)

    //执行结果和上式一样
    val n = if (x > 2) 1 else ()
    println(n)

    //if和else if
    val k = if (x < 0) 0
    else if (x >= 1) 1 else -1
    println(k)
  }
}

Scala基础-01-Scala环境安装及基础语法(变量,函数)

2.2 块表达式

在Scala中使用{ }来构成一个块表达式,块表达式中可包含数量不等的表达式,块的值是块中最后一个表达式的值,块表达式示例:

def main(args: Array[String]) {
    val x = 0
    //将块表达式的值赋给result
    val result = {
      if (x < 0){
        -1
      } else if(x >= 1) {
        1
      } else {
        "error"
      }
    }
    print(result)
}

Scala基础-01-Scala环境安装及基础语法(变量,函数)

2.3 循环语句

Scala中可以用while和for两种方式实现循环,但大多场景会用更灵活的for循环

2.3.1 普通for循环

for循环的格式:
A表示被遍历的对象,可以是表达式,数组或集合

for (i <- A)
  //for循环中的执行语句需要比for表达式退一个tab(和Python一样)
  print(i)
object ForDemo {
  def main(args: Array[String]) {
    //被遍历体是表达式
    //表达式1 to 10表示一个Range(区间),用来产生随机数
    for (i <- 1 to 10)
      println(i)

    //被遍历体是数组
    val arr = Array("a", "b", "c")
    for (i <- arr)
      println(i)

  }

}

Scala基础-01-Scala环境安装及基础语法(变量,函数)

2.3.2 高级for循环

for循环表达式可以很复杂,被循环体可以是一个生成器,生成器可以带一个条件

object ForDemo {
  def main(args: Array[String]) {
    //注意:if前面没有分号
    for(i <- 1 to 3; j <- 1 to 3 if i != j)
      print((10 * i + j) + " ")

  }

} 

Scala基础-01-Scala环境安装及基础语法(变量,函数)

2.3.3 for推导式

如果for循环的循环体以yield开始,则该循环会构建出一个集合

object ForDemo {
  def main(args: Array[String]) {
    //每次迭代生成集合中的一个值
    val v = for (i <- 1 to 10) yield i * 10

    println(v)

  }

} 

三.Scala中的方法和函数

3.1 Scala方法

3.1.1 方法的定义

下式从左到右各部分含义分别为:使用def关键字定义方法,方法名称为method1,参数为x,y,均为Int类型,方法返回值为Int型,方法的方法体为x*y

def method1(x: Int, y: Int) : Int = x*y

3.1.2 方法的返回值

方法的返回值类型可以不写,编译器可以自动推断出来,但是递归函数必须指定返回类型

3.1.3 方法在Scala中的应用

Scala中的操作符本质都是一个方法,如+ - * / % & | ^ >> <<等操作符,底层都是用方法实现的
a + ba.+(b)的简写,a + b本质上是a调用了一个名称为“+”的方法,方法参数为b

所以,a.方法(b)可以简写成 a 方法 b

3.2 Scala函数

3.2.1 函数的定义

定义名称为function1的函数,返回值为val类型变量,参数为x,y,均为Int类型,方法的方法体为x*y

val function1 = (x: Int, y: Int) => x*y

3.3 Scala方法和函数的相互转化

将方法转化为函数:

//只需要在方法名后加下划线“_”
val funtion1 = methon1 _
相关标签: Scala