Scala 开发手册

栏目: Scala · 发布时间: 5年前

内容简介:由于之前用首先需要在

由于之前用 pyspark 写出来的 spark 程序在运行一段时间后会突然卡住,导致任务堆积,最终内存溢出。所以最近又决定直接用 spark 原生的 scala 语言来重写程序, scala 大体上和 java 语言的语法是兼容的。

基本变量

  • val 用于声明常量, var 用于声明变量

列表/数组

  • 不可变
val arr:Array[String] = new Array[String](3)	// 数组定义
val arr = new Array[String](3)
val arr = Array("a", "b", "c")
arr.contains("b")	// 检查列表是否存在指定的元素

元组

  • 不可变对象
val t = new Tuple3(1, "2")
t._1	// 元组下标从1开始,并且是用下划线访问
t.productIterator.foreach{ i => println("value="+i)}	// 元组迭代遍历
t.toString()	// 以字符串的方式输出元组所有的元素

// 数组遍历方式
for (element <- arr) {}
for (i <- 0 until arr.length)
for (i <- 0 until (arr.length, 2))	// 遍历步长
for (i <- (0 until arr.length).reverse) // 反向遍历

字符串

val a = """定义长字符串"""
val a = "a=%s=%s".format("val1", "val2")	// 字符串格式化

时间处理

System.currentTimeMillis()	// 获取当前时间戳(毫秒)
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date)	// 得到格式化的当前日期时间

val now = Calendar.getInstance()
now.get(Calendar.HOUR_OF_DAY)	// 获取当前的小时数

条件控制

if () {} else if {} else {}

类/函数/方法/对象

def addInt( a:Int, b:Int ) : Int = {	// 需要指定参数列表及其类型,返回值及其类型
  a + b	// 可以用return,但是scala并不建议这样做,并且在很多情况这样做有问题
}

def addInt(a: Int=123) : Int = {}	// 定义默认值
def addInt(args: Int*) : Int = {} // 定义可变长度参数
def addInt(a: Int): Option[Int] = {none}	// 定义可选值,该函数可以返回Int也可以返回None

// 类没有构造函数,类本身就是一个构造函数,例如
class Post(val title: String, var content: String) {	// 参数可以是val或var
  def this(title: String) {			// 辅助构造函数以this命名,提供不同的函数签名定义不同的构造方法
    this(title, "the content")
  }
  
  def this(content: String) {}	// 可以定义多个不同签名的辅助构造函数
}
val post = new Post("the title", "the content")


// 偏函数的定义
val originalFunc = (a: int, b: String) => {}
val newFunc = (b: String) => Boolean = originalFunc(123, _)	// 下划线_是占位符,这个函数将originalFunc的参数a进行了固定,在调用时只需要调用newFunc(b)即可

网络请求

scalaj库

首先需要在 pom.xml 中添加如下依赖:

<dependency>
  <groupId>org.scalaj</groupId>
  <artifactId>scalaj-http_2.11</artifactId>
  <version>2.4.1</version>
</dependency>

这样发送http请求

val result = Http(url)
						.postData("{'a':123}")
						.header("content-type", "application/json")
						.asString
result.code	// 状态码
result.body // String格式的响应内容

以上所述就是小编给大家介绍的《Scala 开发手册》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

深入理解计算机系统(英文版·第2版)

深入理解计算机系统(英文版·第2版)

[美] Randal E. Bryant、[美] David R. O'Hallaron / 机械工业出版社 / 2011-1 / 128.00元

本书是一本将计算机软件和硬件理论结合讲述的经典教程,内容覆盖计算机导论、体系结构和处理器设计等多门课程。本书的最大优点是为程序员描述计算机系统的实现细节,通过描述程序是如何映射到系统上,以及程序是如何执行的,使读者更好地理解程序的行为为什么是这样的,以及造成效率低下的原因。 相对于第1版,本版主要是反映了过去十年间硬件技术和编译器的变化,具体更新如下: 1. 对系统的介绍(特别是实际使......一起来看看 《深入理解计算机系统(英文版·第2版)》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

SHA 加密
SHA 加密

SHA 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器