关闭

Scala简明教程(2)

标签: scala教程基础
640人阅读 评论(0) 收藏 举报
分类:

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")
}
1
0
查看评论

Scala简明教程

Scala简明教程 目录       变量声明       函数       包package       数据结构 &#...
  • GarfieldEr007
  • GarfieldEr007
  • 2015-12-10 11:34
  • 467

Scala 基础入门教程

1.前言最近在参加Hadoop和Spark培训,需要使用Scala,自学了一下作为入门,这里作一个记录。2.下载1) 在scala官网下载,地址: http://www.scala-lang.org/2) 下载IDE,地址: http://scala-ide.org/3)配置环境...
  • afandaafandaafanda
  • afandaafandaafanda
  • 2016-03-16 16:14
  • 12028

Scala简明教程(1)

Scala简明教程 Scala简明教程 目录       变量声明       函数       包package       数据结构  ...
  • sbq63683210
  • sbq63683210
  • 2016-05-31 10:22
  • 779

Scala简明教程(3)

Scala简明教程(3)面向对象 没有访问修饰符的class或者类成员默认都是public类型的参数是private类型class C(x: R) //等价于 class C(private val x: R) var c = new C(4)参数是public类型class C(val x: ...
  • sbq63683210
  • sbq63683210
  • 2016-05-31 14:39
  • 463

bootstarp简明教程

bootstrap 的学习非常简单,并且它所提供的样式又非常精美。只要稍微简单的学习就可以制作出漂亮的页面。 bootstrap中文网:http://v3.bootcss.com/   bootstrap提供了三种类型的下载: ------------...
  • sinat_25926481
  • sinat_25926481
  • 2015-12-04 08:41
  • 1036

A-Frame简明教程之初体验

本文为A-Frame简明教程系列文章的第一篇,大家可以到专题里了解更多。 A-Frame初体验 关于A-Frame A-Frame是一个利用web技术创建虚拟现实的框架,由moz://a维护支持。 尽管名字起的有点不着调,但是,对于有着web编程背景的人来说,上手容易,而且虚拟现实...
  • whqet
  • whqet
  • 2018-02-05 17:18
  • 97

自然语言处理简明教程——序言、第一章

一、首先介绍了自然语言与人工语言的区别: (1)自然语言充满歧义,而人工语言的歧义是可以控制的 (2)自然语言的结构复杂多样,而人工语言的结构相对简单 (3)自然语言的语义表达千变万化,迄今还没有一种简单而通用的途径来描述它,而人工语言的语义则可以由人来直接定义 (4)自然语言的结构和语义之...
  • lvchakele
  • lvchakele
  • 2014-05-14 16:12
  • 1417

Go语言简明教程

Go语言简明教程
  • muxxpkq
  • muxxpkq
  • 2016-12-05 10:44
  • 544

《楚广明C#简明教程》[很详细哦]

 文名称:楚广明C#简明教程 地区:大陆 语言:普通话 简介: 对于整套课程我在近期以做出大纲,具体目录请看上图,最后的简单设计模式是我对OOP深入部分课程的一种探索,课程没有完希望大家多多的提建议与方案,再次感谢大家对我的支持,本人水平有限如果在课...
  • naiht
  • naiht
  • 2009-11-11 16:43
  • 1174

Python简明教程学习笔记

如果你想要指示某些不需要如转义符那样的特别处理的字符串(转义符号无效),那么你需要指定一个自然字符串。自然字符串通过给字符串加上前缀r或R来指定。例如 str=r"Newlines are indicated by \n"。 print(str)结果为:Newlines are ...
  • sxh850297968
  • sxh850297968
  • 2014-11-21 20:37
  • 1304
    个人资料
    • 访问:163478次
    • 积分:3163
    • 等级:
    • 排名:第12921名
    • 原创:144篇
    • 转载:9篇
    • 译文:0篇
    • 评论:16条
    博客专栏
    Spark

    文章:16篇

    阅读:33863