- 什么是 Scala
- 简介
- 概念
- 官网
- 六大特征
- Scala 应用场景
- 标识符(驼峰命名法)
- 数据类型
- 运算
- 常量与变量
- 运算符表达式
- 集合
- 列表
- 数组
- 定义函数
- Scala常用数据类型
- 声明函数
- 函数
- 函数组合器
- 循环判断
- (1)判断
- (2)循环
- 目前主要以学习 Scala 语言 作为 学习 Spark 框架的语言基础
- scala 是一门以 jvm 为运行环境的静态类型编程语言,具备面向对象及函数式编程的特性
- Scala 官网首页
- 对应 Spark 版本文档
- 1、Java 和 scala 可以混编
- 2、类型推测(自动推测类型)
- 3、并发和分布式( Actor)
- 4、特质,特征(类似 java 中 interfaces 和 abstract 结合)
- 5、模式匹配(类似 java 中的 switch…case )
- 6、高阶函数
- Kafka:分布式消息队列,内部代码经常用来处理并发问题,用scala 可以大大简化其代码
- spark:方便处理多线程场景,另外 spark 主要用作内存计算,经常要用来实现复杂的算法。利用Scala 这种 函数式编程语言 可以大大简化代码
- 区分大小写
- Scala 是大小写敏感的
- 类名
- 对于所有的类名的首字母大写
- 如果需要使用几个单词来构成一个类的名词,每个单词的首字母大写
- 方法名
- 所有的方法名称的首字母小写
- 如果若干单词被用于构成方法的名称,则每个单词的首字母大写
- 程序文件名
- 程序文件的名称应该与对象名称(Scala 是区分大小写的),并追加".scala"为文件扩展名
注意:
- 比较特殊的 None ,是 Option 的两个子类之一,另一个是 Some ,用于安全的函数返回值。
- scala 推荐在可能返回空的方法使用 Option[X] 作为返回类型。
- 如果有值就返回Some[X],无值则返回 None。
- 定义常量(val):val name:type = initialization
- 定义变量(var):var name:type = initialization
-
算术运算符:±*/%
-
关系运算符:- >,<,>=,<=,==,!=
-
逻辑运算符: &&与,||或 ,!非
-
赋值运算符: = , + = , - = …等
-
位运算符:&与,|或,^ 取反
-
类型
- (1)List 列表,相同元素类型
- (2) Set 没有重复的集合
- (3) Map 可迭代键值对集合
- (4) Tuple元组,可包含不同类型的元素,圆括号
-
声明数组格式:var z:Array[String] = new Array[String] (num) 或 var z = Array(元素1,元素2,…)
-
数组基本 *** 作方法
-
增:++ 或 concat
-
长度 : arr.length 返回数组的长度
-
是否为空:arr.isEmpty 判断数组是否为空
-
- Int 整型(byte,short,long)
- Float 浮点数
- Double 双精度浮点数
- String 字符序列(char)
- Boolean 逻辑型(True或False)
- Unit 表示无值,与void等同(null,nothing,any)
- def functionName (参数列表) : [return type] = { }
def add(a:Int,b:String):Int = { print(a+b)}函数
-
匿名函数
- 定义函数不给出函数名,用“=>”表示
var addInt = (a:Int,b:Int) => a+b ; // 格式:参数列表 => 函数体
-
高阶函数
- 将函数作为参数
- 将函数作为返回值
-
常用函数
- range函数
range(1,10,2) // 前闭后开,步长为2
- 读取文件
Source.fromFile( 文件路径 )
- 写入文件
new PrintWriter( 文件路径 ).write( ' ****** ' ).close
注意: 对RDD的 *** 作,即返回一个新的RDD
-
map 重新计算
List (1,2,3).map( x => x*2 ) : List
-
foreach 对参数进行作用
List ( 1,2,3 ).foreach( x => print( x*2 ) : Unit // 在原来原来元素上 *** 作
-
filter 过滤
List ( 1,2,3 ).filter ( x => x%2==0 ) : List
-
flatten 降维打击
List(List ( 1,2,3 ),List(1,2,3),List ( 1,2,3 )).flatten : List
-
flatMap 结合,先map后flatten
List(List ( 1,2,3 ),List(1,2,3),List ( 1,2,3 )).flatMap(x => x *2 ) : List
-
groupBy 分组,结果Map
List ( 1,2,3 ).groupBy( x => x%2 == 0 ) : Map
-
if 、if…else 、if…else if… else语句、if…else嵌套
-
match 模式匹配
x match { case 1 => fun1 ; case 2 => fun2 ; case _* => fun3} // 类似于switch
- while 、do …while 和 for 循环
- for循环
for ( 变量 <- 集合 ){ 循环语句 } for ( i <- 1 to 10 ){ print(i) } // to 前闭后闭 for (i <- 1 until 10 ){ print(i) } // until 前闭后开 for (i <- 1 to 10 ; if (i%2==0; if i >6){ print(i) } // 多个判断条件间用”;“
哈哈没了,到底了。。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)