Scala基础语法(声明定义、标识符命名、Scala脚本入门)

一、声明与定义(赋值)

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方式

时间: 2024-10-22 22:08:58

Scala基础语法(声明定义、标识符命名、Scala脚本入门)的相关文章

【Scala学习之一】 Scala基础语法

环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk1.8 scala-2.10.4(依赖jdk1.8) spark-1.6 Scala是一种混合功能编程语言,类似java,运行于JVM,集成面向对象编程和函数式编程的各种特性.(1)Scala可以与Java互操作:它用scalac这个编译器把源文件编译成Java的class文件,从Scala中调用所有的Java类库,也同样可以从Java应用程序中调用Scala的

Scala系统学习(三):Scala基础语法

如果您熟悉Java语言语法和编程,那么学习Scala将会很容易.Scala和Java之间最大的句法差异在于行结束字符的分号(;) 是可选的. 当编写Scala程序时,它可以被定义为通过调用彼此的方法进行通信的对象的集合.现在我们简单地看一下类,对象,方法和实例变量的含义. 对象 - 对象有状态和行为.一个对象是类的一个实例.例如 - 狗有状态:颜色,名称,品种,它行为有:摇摆,吠叫和吃东西. 类 - 可以将类定义为描述与该类相关的行为/状态的模板/蓝图. 方法 - 一个方法基本上是一种行为.一个

Scala基础语法 (一)

如果你之前是一名 Java 程序员,并了解 Java 语言的基础知识,那么你能很快学会 Scala 的基础语法. Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的. 我们可以认为 Scala 程序是对象的集合,通过调用彼此的方法来实现消息传递.接下来我们来理解下,类,对象,方法,实例变量的概念: 对象 - 对象有属性和行为.例如:一只狗的状属性有:颜色,名字,行为有:叫.跑.吃等.对象是一个类的实例. 类 - 类是对象的抽象,而对象是类的具体实例. 方法 - 方法

scala 基础语法

文章内容全部来自:http://twitter.github.io/scala_school/zh_cn/index.html 表达式 scala> 1 + 1 res0: Int = 2 值 你可以给一个表达式的结果起个名字赋成一个不变量(val). scala> val two = 1 + 1 two: Int = 2 变量 如果你需要修改这个名称和结果的绑定,可以选择使用var. scala> var name = "steve" name: java.lang

scala函数式编程(二) scala基础语法介绍

上次我们介绍了函数式编程的好处,并使用scala写了一个小小的例子帮助大家理解,从这里开始我将真正开始介绍scala编程的一些内容. 这里会先重点介绍scala的一些语法.当然,这里是假设你有一些java或者python的基础,毕竟大部分人不会将scala当作第一门学习编程的语言. 不过这些语法知识记不住也没关系,本身语法这种东西就应该在使用中被记住.这里写这篇的目的也只是梳理一遍,方便大家对语法有个初步的印象,后面可以随时查询. PS:所使用的版本是scala 2.11.8,那我们开始吧 一.

第1节 Scala基础语法:9、数组

5.    数组.映射.元组.集合 5.1.   数组 5.1.1.    定长数组和变长数组 (1)定长数组定义格式: val arr=new Array[T](数组长度) val arr=Array(1,2,3,4,5) (2)变长数组定义格式: valarr = ArrayBuffer[T]() 注意需要导包:import scala.collection.mutable.ArrayBuffer package cn.itcast.scala import scala.collection

javascript基础语法——变量和标识符

显示目录 目录 [1]定义 [2]命名规则 [3]声明[4]特性[5]作用域[6]声明提升[7]属性变量 前面的话 关于javascript,第一个比较重要的概念是变量,变量的工作机制是javascript的基本特性.实际上,变量是标识符的一种.本文将详细介绍变量和标识符 定义 标识符(Identifier)就是一个名字,用来对变量.函数.属性.参数进行命名,或者用做某些循环语句中的跳转位置的标记 //变量 var Identifier = 123; //属性 (new Object).Iden

Scala基础语法介绍

1.变量的定义 注意:在scala中没有static的概念,在object这个关键字修饰的类中所有的方法和属性都是static的.这里的object类叫做伴生类,目前不涉及. 例: object Test01{ def main(args: Array[String]): Unit = { //使用val定义的变量是不可变的,相当于java中的final修饰的 val v1=1 //使用var定义的变量的值是可变的,在scala中鼓励使用的是val var v2=2 //在定义变量的时候,也可以

Scala基础语法

/* 学慕课网上<Scala程序设计>课程跟着敲的代码 作为代码参考也是很好的 在scala_ide.org上下载eclipse IDE,新建一个worksheet,就可以像在xcode的playground那样玩了, 就是如下所示,写变量直接在右边显示结果 链接:scala集合文档http://docs.scala-lang.org/zh-cn/overviews/collections/introduction 函数式编程,核心是状态不变 */ var x = 1 //> x : I