主要查看教程:
https://www.runoob.com/scala/scala-tutorial.html
http://dblab.xmu.edu.cn/blog/spark
参考:
https://scala-lang.org/files/archive/spec/2.13
变量:
val类型:声明时必须被初始化,且初始化后不能再被赋值
val str1 = "HelloWorld" val str2 : String = "HelloWorld" //也可以显示出声明变量的类型
var类型:声明时需要被初始化,且可以被赋值
var str1 = "ABC" str1 = "DEF"
Scala允许对“字面量”直接执行方法
5.toString()
和Java不同,Scala中没有++和--操作符
多行字符串的表示方法:"""字符串内容"""
val str = """Hello
World
!"""
换行符:
Scala是一种面向行的语言,语句可以用分号(;)结束或换行符结束。若一行只有一条语句,则分号可写可不写;若有多条语句同行,就需要分号。
引用:
使用import关键字引用包
import java.awt.Color //引入Color import java.awt._ //引入包内所有成员
import语句可以出现在任何地方,而不是只能在文件顶部。import的效果从开始延伸到语句块的结束。这可以大幅减少名称冲突的可能性。
如果想要引入包中的几个成员,可以使用selector(选取器):
import java.awt.{Color, Font} // 重命名成员 import java.util.{HashMap => JavaHashMap} // 隐藏成员 import java.util.{HashMap => _, _} // 引入了util包的所有成员,但是HashMap被隐藏了
Scala默认引用java.lang._ 、 scala._ 和 Predef._
Range:
创建从1到5的数值序列,包含区间终点5,默认步长为1
1 to 5 //1,2,3,4,5
创建从1到5的数值序列,不包含区间终点5
1 until 5 //1,2,3,4
创建从1到10的数值序列,步长为2
1 to 10 by 2 //1,3,5,7,9
if条件表达式:
基本和Java一样,但它可以给变量赋值
val x = 1 val a = if(x > 0) 1 else -1
for循环:
for( 变量 <- 表达式) 语句块,其中 “ 变量 <- 表达式 ” 部分被称为生成器
for(i <- 1 to 5 ) println(i)
使用守卫(guard)表达式,过滤出满足指定条件的结果(如只输出偶数)
for(i <- 1 to 5 if i%2==0) println(i)
Scala支持多个生成器,可以用分号分割
for(i <- 1 to 3 ; j <- 2 to 5) println(i*j)
每个生成器都可以添加一个“守卫”
for推导式:
对过滤后的结果进行进一步处理,采用yield关键字,对过滤后的结果构建一个集合
for(i <- 1 to 5 if i%2==0) yield i
读写文件:
写入文本文件
import java.io.PrintWriter val out = new PrintWriter("output,txt:) //使用相对路径时,保存到当前目录下 for( i<- 1 to 5 ) out.println(i) //将1,2,3,4,5写入output.txt out.close()
读取文本文件
import scala.io.Source val in = Source.fromFile("output.txt") val lines = in.getLines for(line <- lines) println(line)