您的位置:首页 > 其它

第一天 - Scala入门(学习目录总览)

2018-03-28 11:05 274 查看
该内容由杰普陈朦朦老师整理:
Scala语言入门
    1.概述
• scala是什么 
• 为什么学习scala(scala的优势) 
• 如何使用scala 
    2. 编译环境(解释器) 
• IDE 
• CMD 
    3. 基础语法与规范 
• 类型、定义、函数调用 
• 代码写作规范 
    4. Scala脚本的编写、编译、运行

面向函数式编程,面向对象编程
 一:Scala概述
        1.为何学习Scala 
可拓展 
• 面向对象 
• 函数式编程 
兼容JAVA 
• 类库调用 
• 互操作 
语法简洁 
• 代码行短 
• 类型推断 
• 抽象控制   
静态类型化 
• 可检验 
• 安全重构 
支持并发控制 
• 强计算能力 
• 自定义其他控制结构
2.本课程学习Scala什么内容
基础的Scala语法、规范 
Scala的函数式编程与面向对象编程 
Scala的高级应用、高级控制等 

3.怎么学习本课程 
二:Scala环境
IDE,CMD
Eclipse(原生支持,使用比较复杂),通过CMD调用Scala解释器
IntelliJ(价格昂贵)方便、简单,易上手
NetBeans(程序可靠但插件笨重)
安装Eclipse或IntelliJ
安装配置JAVA环境
下载对应的Scala插件
把Scala的路径写入系统环境
三:Scala基础语法
3.1 声明与定义(赋值)
val ,常量声明(T表示类型) val x:T val x:T=e
var ,变量声明 var x:T var x:T=e
类型省略(默认类型) val x=e var x=e
声明类型(连续声明)
val x1,x2,x3 等价于 val x1,val x2,val x3
var x1,x2,x3等价于var x1,var x2,var x3
def ,函数声明 def adder(m:Int,n:Int)=m+n
无参函数 def adder()=e
type ,类型声明 type A=Int
class ,类声明 class Tea
object ,对象声明 object Stu现在,简要地看看什么叫做类,对象,方法和临时变量。
对象 - 对象有状态和行为。例如:狗有状态 - 颜色,名字,品种,它有行为 - 摇摆,吠叫,吃东西。对象是类的一个实例。
类 - 类可以被定义为一个模板/蓝本以描述行为/指示其类型支持对象。
方法 - 方法本质上是一个行为。类可以包含许多方法。它是在将逻辑写入方法中,数据进行操作和所有动作被执行。
字段 - 每个对象都有其独特的一组临时变量,这是所谓的字段。对象的状态是由分配给这些字段中的值创建的。
3.2 标识符与命名标识符开始以字母或下划线,可以使用字母,数字或下划线。"$"字符在Scala中是保留关键字,标识符不能使用。以下是合法的字母标识符:age, salary, _value,  __1_value
以下是非法标识符:$salary, 123abc, -salary
运算符识别符由一个或多个运算符字符。操作字符是可打印的ASCII字符,如+, :, ?, ~ 或#。以下是合法的运算符标识
+ ++ ::: <?> :>
Scala编译器将在内部"轧"操作符标识符使它们成为合法的Java标识符,并嵌入$字符。
例如,所述标识符:->将内部表示为$colon$minus$greater。
混合标识符由一个字母数字识别符,随后是一个下划线和运算符标识。
以下是合法的混合标识符:unary_+,  myvar_=
在这里,作为一个方法名unary_+定义了一个一元+运算符和myvar_=用来作为方法名称定义了一个赋值运算符。

一个文字标识是包含在反引号(` . . . `)的任意字符串。
以下是合法的文字标识:`x` `<clinit>` `yield`

Scala关键字:
下面的列表显示在Scala中的保留字。这些保留关键字不可以被用作常量或变量,或任何其他的标识符名称。
但是反引号括起除外,如return是保留字,标志为Do.return是非法的,但可以标志为Do. ` retern ` 
abstract	case	catch	class
def	do	else	extends
false	final	finally	for
forSome	if	implicit	import
lazy	match	new	null
object	override	package	private
protected	return	sealed	super
this	throw	trait	try
true	type	val	var
while	with	yield
-	:	=	=>
<-	<:	<%	>:
#	@
3.3 数值类型
整型值:Int(-2^31~2^31-1),Long(-2^63~2^63-1)
Short(-2^15~2^15-1),Byte(-2^7~2^7-1)
浮点型值:Double 64位  Float 32位
布尔值:Boolean(true/false)
字符值:Char 16位无符号Unicode字符(0~2^16-1)
String Char序列
除了String归于java.lang包之外,其他基本类型均是scala包的成员。
Int等基本数据类型的全名是scala.Int,但包scala同java.lang的所有成员都能自动引用,因而能在实际使用时简化。
整型值
整型值格式有十进制、十六进制、八进制
十进制:数开始于非零数字	val one=15(非零数字1-9)
十六进制:数字开始与0x或0X	val two=0xABC(非零数字为1-9和A-F)
八进制:数字开始于0而非0x	val three=0567(非零数字为1-7)
默认为Int类型,要声明、定义Long类型的值,除直接声明 外,亦能在数字后增加L或l,Short同Byte需直接声明 al four=0xABCDL
在Scala的新版本中,取消了使用8进制赋值的形式,即形如:val a:Int=0123的赋值表达式是会警告或提示错误的。
浮点值 
浮点格式为十进制、小数点、E或e及指数部分
一般浮点数默认为Double类型,要声明Float类型除直接声明外,能在数字后增加F或f
布尔值
val right=true
val wrong=false
字符值 Char 
• 单引号间的任意Unicode字符    val a='A'
• 单引号内前缀反斜杠的八进制、十六进制表字符编码数字
val b='\321' 八进制,从\0到\377
val c='\u0042' 十六进制,实际上是scala中通用的转义语法
String 
• 双引号间的任意Unicode字符串   val d="ABCD"
• val e="\u0042\\\u0041"

3.4 操作符运算 
使用中缀数学操作符+、-、*、/、%并产生对应的数值结果
使用比较操作符<、>、>=、=<并产生布尔值结果
使用逻辑操作符&&、||并产生布尔值结果
使用对等操作符==、!=并产生布尔值结果
使用位操作符&、|、^、~并产生数值结果
实际上,ScaLa没有任何操作符,所有的操作符运算都是对方法(函数)的调用 
• 如1+2实际上是调用了.+() 这个方法1.+(2) 
• 在具体的调用中,调用+实际上包含了+的各种类型参数的重载,而无需额外定义 
前缀后缀操作符是一元操作符,而中缀操作符是二元操作符 
操作符具有优先级(表达式的读取与执行并不依赖与顺序,更关键是操作符的优先级) 
• 1+5*4=21   (1+5)*4=24 
• 操作符优先级一般如下: 
• 特殊字符 > */% > +- > : > =!> <> > & > ^ > | > 其他字母 > 赋值操作符 
• scala支持如"***""+-+"之类的操作符重载,考虑其优先级一般以第一个符号为主 
• 值得注意的是,形如"*="的操作符重载,会被认为是赋值操作符而具有最低的优先级         
即   m *= n+5  等价于 m *= (n+5) 

3.5 语句结束
Scala是基于行的语言,分号和换行均可作为语句的结束  
判定换行是否为语句的结束有以下规则: • 换行前的符号是一个语句的结束:常量、标识符、保留字及其他分隔符
• 换行后的符号是一个语句的开始:除部分分隔符及保留字外的所有符号
• 符号处在一个允许多语句的区域:Scala源文件中,匹配的{与}间换行不作为语句的结束
• 匹配的(与)之间,[与]之间
• XML模式下的区域
• case符号及匹配的=>符号之间
• if、while、for、type是允许跨两行的合法语句 3.6 Scala通用规范 
Scala是一门相当自由的语言,合法的语句却不一定好读、便于理解
通常的Scala编写规范
代码格式化,不同段落、不同文件的Scala应保持相同的语法格式 
层次间缩进,避免长语句
合理的命名 
• 短作用域短名字,长作用域长名字
c8a0

• 通用缩写,词意与目的相近,莫要使用add来命名一个做减法的函数
• 避免不同用途时重用名字 • 避免用反引号声明保留字
• 有返回值的方法(函数)用可描述的名字
利用{}创建复合表达式
及时注释       //   /*  */ 
Scala支持单行和多行注释非常类似于Java。多行注释可以嵌套,但必须正确嵌套。
可用的任何注释和所有字符都将被Scala编译器忽略。
3.7 Scala脚本入门 
编写 
建立文本文件,把后缀名改为scala,使用记事本编写

使用Eclipse等进行scala脚本建立、编写object Hello{
    def main(args:Array[String]){
println("hello scala !")
    }
}编译 
绝大部分scala脚本在运行前需先进行编译
cmd下利用scalac、fsc对scala脚本进行编译使用Scala的基本编译器——scalac。开始编译源文件,但在编译完成之前会有几秒的停顿。因为每次编译器启动时,都要花一些时间扫描jar文件内容,并且在开始编译提交的源文件之前完成更多其他初始化工作(因此可能比Java程序编译慢)。命令如下:
scalac -d class/ Maps.scala运行
只包含简单的语句时无需编译,能直接运行,否则需先进行编译,运行编译后生成的scala文件  
cmd下利用scala运行 直接使用scala命令来运行的,不要以为scala命令只能开启Scala命令行模式,闲言少叙,直接看命令行:
scala -cp maps.jar Maps red blue black orange
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  scala入门