定义
Scala是一种“可扩展编程语言”。Scala已发现其可用于开发各种规模的软件,例如,使用Scala,您可以为大学考试开发一个小项目,也可以将其用于可以完成大量任务的项目。主要在服务器管理和数据科学中发现它的用途。
Scala是一种可在JVM上运行的可扩展编程语言,它具有如下好处:
1)非常有效地管理复杂服务。
2)Scala融合了面向对象和函数式编程语言的功能,使其更适合于高端软件的开发,而高端软件的开发只剩下高质量的软件。
3)作为JVM可完成的编程语言,Scala为您提供了替代Java的开发范围。
主要特性
面向对象: Scala是一个纯面向对象语言,在某种意义上来讲所有数值都是对象。对象的类型和行为是由class和trait来描述的。Class的抽象可由子类化和一种灵活的基于mixin的组合机制(它可作为多重继承的简单替代方案)来扩展。
函数式: Scala还是一个函数式语言,在某种意义上来讲所有函数都是数值。Scala为定义匿名函数提供了一种轻量级的语法,它支持高阶(higher-order)函数、允 许函数嵌套、支持局部套用(currying)。Scala的case类及其内置支持的模式匹配模型代数类型在许多函数式编程语言中都被使用。
静态类型: Scala配备了一套富有表现力的类型系统,该抽象概念以一种安全的和一致的方式被使用。
可扩展性: Scala的设计承认了实践事实,领域特定应用开发通常需要领域特定语言扩展。Scala提供了一个独特的语言组合机制,这可以更加容易地以类库的形式增加新的语言结构: 任何方式可以被用作中缀(infix)或后缀(postfix)操作符闭包按照所期望的类型(目标类型)自动地被构造 两者结合使用可方便地定义新语句,无需扩展语法,也无需使用类似宏的元编程工具。
Scala 简介,用途及优点:https://blog.csdn.net/m0_58028961/article/details/123168220
环境搭建
1.机器已经安装JDK1.8版本
2.下载windows版scala-2.11.12.zip或者linux版scala-2.11.12.tgz
3.将压缩包解压到某一路径
4.配置scala的环境变量
scala反编译分析
object hello{
def main(args:Array[String]):Unit ={
println("Hello world")
}
}
以hello.scala为例,object在底层会生成两个类 hello以及hello$
hello中有个main函数,调用hello$ 类的一个静态对象 MODULES$
hello
.
M
O
D
U
L
E
.MODULE
.MODULE. 对象时静态的,通过该对象调用hello$的main函数
在main中写的代码在放在hello$的main,在底层执行Scala编译器做了一个包装
(1)Scala中如果使用object关键字声明类,在编译时,会同时生成两个类:当前类,当前类$
(2)使用当前类$的目的在于模拟静态语法,可以通过类名直接访问方法。
(3)Scala将当前类$这个对象称之为“伴生对象”,伴随着类所产生的对象,这个对象中的方法可以直接使用。
Scala-反编译:https://blog.51cto.com/u_15318160/3248022
IDEA进行scala项目创建
1.打开idea–》新建–》项目
2.选择maven工程,选择1.8版本的sdk
3.修改GroupId和ArtifactId
4.打开设置–》plungins–》安装scala–》完成后重启
5.右键项目–》Add Framework Support…–》选择Scala–》点击OK
(第一次引入框架,Use libary看不到,需要选择你的Scala安装目录)
伴生类和伴生对象
概念:scala中同一个源文件中相同名称的object结构称之为class结构的伴生对象,而这个类被称为这个对象的伴生类。
前提:构建伴生类和伴生对象的成立的需要满足二者必须在同一个.class源文件
以及二者的名称必须相同
特点:伴生对象可以访问伴生类中非私有的和私有的成员
IDEA关联源码
从官网上下载相应的Scala版本,我使用的是scala-2.11.12
https://www.scala-lang.org/download/all.html
下载完成后解压缩至文件夹
打开idea中任意scala代码,将鼠标移至scala任意参数类型或者方法上,按住ctrl并单击右键进入反编译窗格,idea上方会显示该条信息,点击choose sources,选择解压的文件夹
idea在读取文件夹信息后,会自动跳转至源码,此后就能使用ctrl+左键查看源码了
代码注意事项
l ) Scala源文件以“.scala”为扩展名
2)Scala程序的执行入口是main()函数
3) Scala语言严格区分大小写
4) Scala方法由一条条语句构成,每个语句后不需要分号
5)如果在同一行有多条语句,除了最后一条语句不需要分号,其它语句需要分号