1.开发环境准备
1.1 scala sdk安装
jdk 1.8以上
1.2下载msi版本,下一步就完事儿了
下载zip版本自己配也成
2.IDEA创建工程
2.1不想默认打开上一次工程
settings->system settings->reopen last… 把√去掉
2.2
tips:点击左下角的小框框可以隐藏工具栏
项目框架->modules->添加依赖jar包
2.3如果new的时候找不到scala类
打开框架中的global labararies ->点击+号-> 添加scala依赖(这个要下载到本地解压喔qwq)
2.4 hello scala
object Helloscala{
def main(args:Array[String]):Unit={
println(“hello scala”)
}
}
2.5 cmd 窗口进入scala 页面也可以直接运行代码
2.6构建参数
object helloscala {
def main(args:Array[String]):Unit={
println("hello "+args(0))
}
}
3.基本语法
3.1 函数式编程体验 spark-shell wordcount
cd …/spark目录/bin/spark-shell
sc.textFile(“文件路径”).flatMap(.split(" "))
sc.textFile(“文件路径”).flatMap(.split(" ")).collect
sc.textFile(“文件路径”).flatMap(.split(" ")).map((,1)) ->变成数组
4.数据类型
scala和java一样,有7中数值类型 Byte、char、short、int、long、float、double(无包装类型)和boolean、unit类型
注意:unit 表示无值,和其他语言中void等同。用作不返回任何结果的方法的结果类型。unit只有一个实例值。写成()。
5.变量的定义
val 修饰的变量值不可变 相当于java中的final ,var修饰的变量值可变。
Unit 数据类型相当于java中的void关键字,但是在scala中它的标识形式是一对()。
var/val 变量名称:类型=值
ex:val a:Int=100
val s:Unit=peintln("hello")
==>>
hello
s:Unit()
println(f"$name%s 学费
p
r
i
c
e
price%1.2f,网址是
priceurl")
//printf(%s 学费 %1.2f ,网址是%s“,name,price,url )
//文字‘f’插值器允许创建一个格式化的字符串,类似于c语言中的printf
//在使用‘f’插值器时,所有的变量引用都应该是printf样式格式说明符
val stu=new student(“taotao”,18)
println(s"$[stu.name]") s插值器,自动补全
Scala 提供了三种创新的字符串插值方法:s,f 和 raw.
三种字符串插值方法使用
if表达式的使用
val r=if(i<8) i //else 没有写,编译器会自动推测出你什么都没有返回就是unit
循环语句/yield关键字
在scala中有for循环和while循环,用for循环比较多
用脚标循环:var arr=Array(1,2,3,4,5)
for(ele<- 0 to 4)println(arr(ele)) //to前后都是闭区间,until前闭后开
如果不知道数组长度 for(ele <- 0 until arr.length) println(arr(ele))
for (a<-arr if a%2==0) yield a
针对每一次 for 循环的迭代, yield 会产生一个值,被循环记录下来 (内部实现上,像是一个缓冲区).
当循环结束后, 会返回所有 yield 的值组成的集合.
返回集合的类型与被遍历的集合类型是一致的.
scala中的定义方法和函数
1、val x:(a:Int,b:Int)=>a+b
2、val b:(Int,Int)=>Int=(x,y)=>x*y
传值调用和传名调用
def 方法名称(参数列表):方法返回值类型={
//方法体
}
def +(a:Int,b:Int):Int=a+b
方法转换成函数
方法名称_
//函数的定义=》
方法一:函数参数列表=>函数的函数体及返回值
(a:Int,b:Int)=>a+b//匿名函数
val add=(a:Int,b:Int)=>a+b
方法二:
val add:(Int,Int)=>Int=(x,y)=>x+y
函数名称:(参数类型=>函数返回值=(参数引用)=>函数体