内容简介:由于之前用首先需要在
由于之前用 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)即可
网络请求
首先需要在 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 开发手册》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 微信小程序开发手册
- Babel 插件开发手册(官方)
- 阿里Java开发手册快速学习
- 阿里巴巴Java开发手册阅读笔记
- 《Java 开发手册》今日发布,向全球开发者致敬!
- 酱学堂 | ARkit 调戏手册(2)结合unity开发
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。