Scala基础语法(声明定义、标识符命名、Scala脚本入门)
2015-05-09 22:17
393 查看
一、声明与定义(赋值)
1、val, 常量声明val x:T val x:T=e
2、var, 变量声明
var x:T var x:T=e
类型省略(默认类型)
val x=e var x=e
声明省略(连续声明)
val x1,x2,x3 等价于 val x1;val x2; var x1,x2,x3:T=e 等价于 var xn:T=e
3、def,函数声明
def abc(xn:T):T*=e def adder(m:Int,n:Int)=m+n def adder()=e
无参函数
type,类型声明 class,类声明 object,对象声明
二、数值类型
整型值:Int ( -2^31~2^31-1) Long(-2^63~2^63-1) Short(一215一215一1) Byte(一27一27一1)
浮点型值:
Double 64位IEEE754单精度浮点数 Float 32位IEEE754单精度度浮点数
布尔值:
Boolean(true/false)
字符值:
Char 16位无符号Unicode字符(0~2^16-1) String Char序列 除了String归于java.lang包外,其他基本类型均是scala包的成员
Int等基本类型的全名是scala.Int,但包scala同java.lang的所有成员都能自动引用,因而能在实际使用时简化。
1、整型值
整型值格式有十进制、十六进制与八进制
十进制:数开始于非零数字
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需直接声明
val four=0xABCDL
2、浮点值
浮点格式为十进制、小数点、E或e及指数部分,一般浮点数默认为Double类型,要声明Float类型除直接声明外,能在数字后增加F或f。
3、布尔值
val right=true val wrong=false
4、字符值
Char
•
单引号间的任意Unicode字符 val a=‘A’
•
单引号内前缀反斜杠的八进制、十六进制表字符编码数字
val b=‘\321’ 八进制,从\0到\377 val c=‘\u0042’ 十六进制,实际上是scala中通用的转义语法
String
•
双引号间的任意Unicode字符串 val d=“ABCD”
•
val e=“\u0042\\\u0041”
三、操作符运算
使用中缀数学操作符+、-、 *、 /、 % 并产生对应的数值结果
使用比较操作符<、 >、 >=、 =< 并产生布尔值结果
使用逻辑操作符 && 、 || 并产生布尔值结果
使用对等操作符 ==、!= 并产生布尔值结果
使用位操作符&、
|、 ^、 ~ 并产生数值结果
实际上,
Scala没有任何操作符,所有的操作符运算都是对方法(函数)的调用
•
如1+2实际上是调用了 .+() 这个方法 1.+(2)
•
在具体的调用中,调用+实际上包含了+的各种类型参数的重载,而无需额外定义。
前缀后缀操作符是一元操作符,而中缀操作符是二元操作符
操作符具有优先级(表达式的读取与执行并不依赖与顺序,更关键是操作符的优先级)
1+5*4=21 (1+5)*4=24
•
操作符优先级一般如下:
特殊字符>*/%>+-
>
: >
=! >
<> >
& >
^ >
| >
其他字母 >
赋值操作符
•
scala支持如“***”“+-+”
之类的操作符重载,考虑其优先级一般以第一个符号为主。
•
值得注意的是,形如“*=”的操作符重载,会被认为是赋值操作符而具有最低的优先级
即
m *= n+5 等价于 m *= (n+5)
重载
a<<b 为 a*(b+1)
重载 a-=b 为 a-b*2
四、标识符命名
首字符为字母,后续字符任意字母和数字,可后接下划线_首字符为操作符,后续字符为任意操作符
以反引号
"`" 括起来的任意字符串(除了反引号)
Scala中有些保留字,不能用作标识符,但是反引号括起来除外
如return是保留字,标志为Do.return是非法的,但可以标志为Do.
` retern `
具体保留字一般可以通过查询保留字表得出,往往是常用的有特定含义的单词,如case、else等
五、语句结束
Scala是基于行的语言,分号和换行均可作为语句的结束判定换行是否为语句的结束有以下规则:
•
换行前的符号是一个语句的结束:常量、标识符、保留字及其他分隔符
•
换行后的符号是一个语句的开始:除部分分隔符及保留字外的所有符号
•
符号处在一个允许多语句的区域: Scala源文件中,匹配的{与}间
换行不作为语句的结束
•
匹配的(与)之间, [与]之间
•
XML模式下的区域
•
case符号及匹配的=>符号之间
•
if、while、for、type是允许跨两行的合法语句
六、Scala通用规范
Scala是一门相当自由的语言,合法的语句却不一定好读、便于理解。通常的Scala编写规范
代码格式化,不同段落、不同文件的Scala应保持相同的语法格式
层次间缩进,避免长语句
合理的命名
•
短作用域短名字, 长作用域长名字
•
通用缩写,词意与目的相近,莫要使用add来命名一个做减法的函数
•
避免不同用途时重用名字
•
避免用反引号声明保留字
•
有返回值的方法(函数)用可描述的名字
利用{}创建复合表达式
及时注释//
/* */
七、Scala脚本入门
编写
建立文本文件,把后缀名改为scala,使用记事本编写
使用Eclipse等进行scala脚本建立、编写
编译
绝大部分scala脚本在运行前需先进行编译
cmd下利用scalac、 fsc对scala脚本进行编译
运行
只包含简单的语句时无需编译,能直接运行,否则需先进行编译,运行编译后生成的scala文件
cmd下利用scala运行
1、cmd方式
编辑
编译运行
2、eclipse方式
相关文章推荐
- scala入门4(基础语法之标识符与命名,语句结束)
- scala入门5(基础语法之通用规范、脚本入门)
- Linux入门第五天——shell脚本入门(下)基础语法之循环
- Linux入门第五天——shell脚本入门(中)基础语法之判断与条件
- scala入门2(简介与基础语法2--数值类型)
- Scala 基础语法入门
- Lua脚本之语法基础快速入门
- Lua脚本之语法基础快速入门
- Lua脚本之语法基础快速入门
- scala基础语法-类定义
- Lua脚本之语法基础快速入门
- scala入门3(基础语法之操作符运算)
- jsp Servlet基础入门学习篇 十二、脚本元素、指令和预定义变量
- scala基础语法-类定义
- Scala学习 1.1 Scala基础与语法入门实战
- Java_语法基础_标识符定义规则
- Lua脚本之语法基础快速入门
- scala入门1(简介与基础语法1)
- Scala入门系列(一):基础语法
- Lua脚本之语法基础快速入门