Spark开发指南

base grammer

1、常量和变量

val声明出来的为常量,不能再次赋值;可以省略类型,scala会自动推导。

var声明出来的为变量,可以再次赋值;可以省略类型,scala会自动推导。

var a = "xxx"; 等同于 var a : String = "xxx";

a = "String 2";

val b = 2;

b = 3; // 会出错

声明多个变量:

val a, b = "xxx"; // a, b的值都是 "xxx"

2、scala的常用数据类型:

Byte:内置转换为scala.runtime.RichByte

Char:内置转换为scala.runtime.RichChar

Short:内置转换为scala.runtime.RichShort

Int:内置转换为scala.runtime.RichInt

Long:内置转换为scala.runtime.RichLong

Float:内置转换为scala.runtime.RichFloat

Double:内置转换为scala.runtime.RichDouble

Boolean:内置转换为scala.runtime.RichBoolean

这些类型都是类,Scala并不区分基本类型与引用类型。

与java基本类型相对应,但拥有更多的方法,因为会转换为相应的RichXxxx,在转换后的类里添加scala语言层面的方法。

例如:

  1.toLong,其中1会被转换为RichInt类型的实例。

  1.to(5)会产生Range(1, 2, 3, 4, 5)

任意有穷数字:

BigInt:

BigDecimal:

字符串:

String:对应于scala.collection.immutable.StringOps

3、类型转换

使用方法,没有强制转换一说。

如:var a : Int = 1

  var b : Long = a.toLong

4、操作符重载

val value = 8 + 5

其中,+ 这些操作是方法。

完整的是val value = (8).+(5);

(8)转换成Int对象,调用Int对象的+方法(方法名为+)。

没有++,--操作符,因为相应类型是不可变的。

5、Scala方法调用的简略写法

方法的简略写法:

  a 方法 b

完整写

  a.方法(b)

例:1.to(2),可简略写为1 to 2

apply方法:

  a(b)

完整为

  a.apply(b)

例: "xxx"(2) 实际转换为 "xxx".apply(2)

常用来构造对象

方法作为参数:

匿名方法:

  x, y => x + y 或

   +

x, y 表示为参数;=>指向方法体;x + y计算和并返回。

+ 中,第一个“”表示第一个参数,第二个“”表示第二个参数。

例:"sU".count(_.isUpper)

  "sU".count(x => x.isUpper)

6、import

import math._

作用是导入scala.math包下所有类和对象。以scala.开头的包可以省略。

7、单例对象object

object定义的对象为单例,可以直接使用 对象名.方法(参数) 进行调用,类似java中的static方法。

伴生对象:拥有与class类同名的object定义的对象。

8、Scala doc

http://scala-lang.org/api

数学函数位于scala.math包中,而不是位于某个类中;

使用数值类型,使用RichInt、RichDouble等;

使用字符串,使用StringOps;