文章目录
零、IDEA的scala环境配置
安装scala 插件
打开菜单 [File] → [Settings] → [Plugins],搜索scala,点击[install]
给项目添加scala模块
右键 [项目] → [Add Frameworks Support] → [Scala] → [Create],选择scala的sdk
在源文件目录创建scala目录
右键 [src源目录] → [New] → [Directory],新建scala目录
将scala目录转换成源目录
右键 [scala目录] → [Mark Directory as] → [Sources Root]
一、scala特点
Spark支持使用Scala、Java、Python和R语言进行编程。由于Spark采用Scala语言进行开发,因此,建议采用Scala语言进行Spark应用程序的编写。Scala是一门现代的多范式编程语言,平滑地集成了面向对象和函数式语言的特性,旨在以简练、优雅的方式来表达常用编程模式。Scala语言的名称来自于“可伸展的语言”,从写个小脚本到建立个大系统的编程任务均可胜任。Scala运行于Java平台(JVM,Java 虚拟机)上,并兼容现有的Java程序。
1.1 面向对象特性
Scala是一种纯面向对象的语言,每个值都是对象。对象的数据类型以及行为由类和特质描述。
类抽象机制的扩展有两种途径(能避免多重继承的种种问题):一种途径是子类继承,另一种途径是灵活的混入机制。
1.2 函数式编程
Scala也是一种函数式语言,其函数也能当成值来使用。Scala提供了轻量级的语法用以定义匿名函数,支持高阶函数,允许嵌套多层函数,并支持柯里化。Scala的case class及其内置的模式匹配相当于函数式编程语言中常用的代数类型。
可以利用Scala的模式匹配,编写类似正则表达式的代码处理XML数据。
1.3 静态类型
Scala具备类型系统,通过编译时检查,保证代码的安全性和一致性。类型系统具体支持以下特性:
- 泛型类
- 协变和逆变
- 标注
- 类型参数的上下限约束
- 把类别和抽象类型作为对象成员
- 复合类型
- 引用自己时显式指定类型视图
- 多态方法
二、代码简单测试栗子
右键 [scala目录] → [New] → [Scala Class],新建文件xxx.scala:
/**
* object 单例对象中不可以传参,
* 如果在创建Object时传入参数,那么会自动根据参数的个数去Object中寻找相应的apply方法
*/
object Lesson_ObjectWithParam{// object相当于java的工具类
def apply(s:String)={println("name is "+s)}
def apply(s:String,age:Int)={println("name is "+s+",age = "+age)}
def main(args:Array[String]):Unit={Lesson_ObjectWithParam("zhangsang")Lesson_ObjectWithParam("lisi",18)}}//name is zhangsang//name is lisi,age = 18
三、scala trait(特征)
trait
类似java的接口,但是和接口不同的是,trait
还能定义属性和方法的实现。- 一般情况下Scala的类只能够继承单一父类,如果是trait就可以实现多重继承。
- 下面的栗子是trait特征由
isEqual
和isNotEqual
方法组成(前者没有定义具体的方法实现,后者有),类似java的抽象类。
trait Equal{
def isEqual(x:Any):Boolean
def isNotEqual(x:Any):Boolean=!isEqual(x)}classPoint(xc:Int, yc:Int)extendsEqual{var x:Int= xc
var y:Int= yc
def isEqual(obj:Any)=
obj.isInstanceOf[Point]&&
obj.asInstanceOf[Point].x == x
}
object Test{
def main(args:Array[String]){
val p1 =newPoint(2,3)
val p2 =newPoint(2,4)
val p3 =newPoint(3,3)println(p1.isNotEqual(p2))println(p1.isNotEqual(p3))println(p1.isNotEqual(2))}}/* false true true */
四、常见问题
4.1 IDEA安装完插件Scala后 通过add frameworks support找到不到scala插件
IDEA安装完插件Scala后 通过add frameworks support找到不到scala插件,不过可能也解决不了。
Reference
[1] https://docs.scala-lang.org/getting-started/index.html
[2] scala基础教程
[3] https://www.runoob.com/scala/scala-traits.html
[4] Spark-Mac上IDEA配置Spark开发环境
[5] Idea配置和运行scala
[6] IDEA配置JDK的几种方式
[7] scala——关键字trait的使用
[8] 厦大大数据之Spark入门教程(Scala版)
版权归原作者 山顶夕景 所有, 如有侵权,请联系我们删除。