文章目录
- 变量声明
 - 语句块
 - if语句
 - for循环
 - while、do while
 - 数组
 - Map映射
 - tuple元组
 
变量声明
//在Scala中val用于定义常量,var用于定义变量
var var_i = 1
var_i += 1
val val_i = 1
val_i += 1
val_i = 2
 
运行结果如下:
 
 可以看到,常量是初始复制就确定了,不能修改和重新复制,因为常量会比变量的执行速度等快,所以能定义常量的地方就定义常量。
Scala中也有数据类型的概念:
 数据类型表达:变量名:数据类型。
 声明时如果不明确写出数据类型,系统会自动判断。
var var_i:Float = 1
 
执行结果如下
 
语句块
Scala的语句块拥有返回值,这也是为什么Scala语句比较简短的原因之一。
 例如:
val i = {val a=3; val b=4; a+b}
 

 每次都会返回语句块中最后一段代码的返回值,如果不存在返回值,则返回Unit,表示返回值为空的意思。
if语句
(1)单行写法,一般用于赋值语句

(2)多行写法
 当使用其他语言风格写时(如Java):
object helloWorld {
  def main(args: Array[String]): Unit = {
    val inData = 5
    var resultIf:String = "Not assignment"
    if(inData < 5) resultIf = "inData < 5"
    else if(inData < 10) resultIf = "5 =< inData < 10"
    else resultIf = "inData >= 10"
    print(resultIf)
//    println("Hello World")
  }
}
 
当使用Scala语言风格写时:
object helloWorld {
  def main(args: Array[String]): Unit = {
    val inData = 5
    var resultIf:String = {
      if (inData < 5) "inData < 5"
      else if (inData < 10) "5 =< inData < 10"
      else "inData >= 10"
    }
    println(resultIf)
//    println("Hello World")
  }
}
 
可以看到,因为Scala语言自带语句块返回值,使得代码简洁了不少。
for循环
基本形式:
 for(变量<-集合){循环体}
 其中的变量不需要声明
object helloWorld {
  def main(args: Array[String]): Unit = {
    for(i<-1 to 10){
      println(i)
    }
  }
}
 
for 可以返回一个集合,使用yield
object helloWorld {
  def main(args: Array[String]): Unit = {
    var j = for(i<-1 to 10 if i%2==1; if i!= 7) yield i
    println(j)
  }
}
 
这样就j就是输出结果的一个集合。
for 嵌套
 写法1:
object helloWorld {
  def main(args: Array[String]): Unit = {
    for(i<-2 to 5){
      for (j<-6 to 8) println(i * j)
    }
  }
}
 
输出:
 12
 14
 16
 18
 21
 24
 24
 28
 32
 30
 35
 40
写法2(scala风格):
object helloWorld {
  def main(args: Array[String]): Unit = {
    var t = for(i<-2 to 5; j <-6 to 8) yield i*j
    println(t)
  }
}
 
Vector(12, 14, 16, 18, 21, 24, 24, 28, 32, 30, 35, 40)
 for 嵌套中的守卫可以进行可见变量的操作
while、do while
与其他语言类似
 注意:scala没有其他语言相同的break、continue,类似功能可以使用守卫实现。
数组
与Java类似,分为可变和不可变数组,默认是不可变数组,初始化后长度不可变。
Map映射
键值对的集合。
 [name:“张飞”, age:15, Gender:m]
 两个Map相加[age:20]+[age:30] = [age:50]
就是键相同能够进行值的相加,这点用于词频统计非常方便。
tuple元组
圆括号里的数据,可以是不同的数据类型。
 访问元组中的元素
 使用._下标(从1开始) 进行索引
 



















