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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/eagleuniversityeye/article/details/80934197

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页面
这里写图片描述
由于现有的Spark项目一般都用的比较成熟的Scala2.10.x版本,所以为了方便日后学习Spark,我选择了下载较老的2.10版本,在Other Releases中选择2.10版

这里写图片描述

Windows用户可以选择.msi后缀的文件来安装Scala,可以一键安装不用自己手动配置环境变量
这里写图片描述

IDEA安装Scala插件

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

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

Jetbrains官网的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)
  }
}

这里写图片描述

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)
}

这里写图片描述

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)

  }

}

这里写图片描述

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) + " ")

  }

} 

这里写图片描述

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 _
展开阅读全文

没有更多推荐了,返回首页