Scala简明教程(2)

Scala简明教程(2)

包Package

import scala.collection._  //通配符导入,类似java中的.*
import scala.collection.Vector
import scala.collection.{Vector, Sequence}  //导入多个
import scala.collection.{Vector => Vec28}  //别名.
import java.util.{Date => _, _}  //除了Date,其它都导入
package pkg at start of file
package pkg { ... }

一般语句后面可以省略 ;


数据结构

tuple类型

(1,2,3)
var (x,y,z) = (1,2,3)

List类型

var xs = List(1,2,3)
xs(2)

一些特殊的操作符

1 :: List(2,3)
List(1, 2) ::: List(2, 3)
List(1, 2) ++ Set(3, 4, 3)

range

1 to 5 same as 1 until 6
1 to 10 by 2

字符串

s前缀, 替换字符串中的变量或表达式

val name = "James"
println(s"Hello, $name") // Hello, James
println(s"1 + 1 = ${1 + 1}")

f前缀, printf风格的格式化

val height = 1.9d
val name = "James"
println(f"$name%s is $height%2.2f meters tall") // James is 1.90 meters tall

raw前缀, 原始字符,不转义

scala> raw"a\nb"
res1: String = a\nb

r后缀, 正则表达式

scala> "a".r
res1: scala.util.matching.Regex = a

自定义的字符串拦截器

implicit class JsonHelper(private val sc: StringContext) extends AnyVal {
  def json(args: Any*): JSONObject = ...
}
val x: JSONObject = json"{ a: $a }"

控制流程
if语句

if (check) happy else sad
if (check) happy   //下面一样
if (check) happy else ()

while语句

import scala.util.control.Breaks._
breakable {
  for (x <- xs) {
    if (Math.random < 0.1) break
  }
}
for (x <- xs if x%2 == 0) yield x*10 //与下面的等价
xs.filter(_%2 == 0).map(_*10)
for ((x,y) <- xs zip ys) yield x*y //与下面的等价
(xs zip ys) map { case (x,y) => x*y }
for (x <- xs; y <- ys) yield x*y  //与下面的等价
xs flatMap {x => ys map {y => x*y}}
for (x <- xs; y <- ys) { //双层嵌套,类似for {for {}}
println("%d/%d = %.1f".format(x,y, x*y))
}
for (i <- 1 to 5) {
println(i)
}
for (i <- 1 until 5) {
println(i)
}

模式匹配
case class自动生成equals和toString,参数相同则==返回true

(xs zip ys) map { case (x,y) => x*y }
val v42 = 42
Some(3) match {
case Some(`v42`) => println("42")
case _ => println("Not 42")
}
val UppercaseVal = 42
Some(3) match {
case Some(UppercaseVal) => println("42")
case _ => println("Not 42")
}
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载,该博客仅用于个人学习,欢迎大家互相交流讨论 https://blog.csdn.net/sbq63683210/article/details/51545302
文章标签: scala 教程 基础
个人分类: Scala
上一篇Scala简明教程(1)
下一篇Scala简明教程(3)
想对作者说点什么? 我来说一句

Scala语法简明教程

2016年05月09日 167KB 下载

通信原理简明教程第二版pdf

2012年03月04日 10.33MB 下载

编译原理简明教程.

2012年11月16日 2.18MB 下载

定量分析简明教程赵士铎答案

2009年05月22日 161KB 下载

没有更多推荐了,返回首页

关闭
关闭