scala学习笔记
搬砖小工053
这个作者很懒,什么都没留下…
展开
-
Scala 集合(Collection)
简介Scala 集合分为可变的和不可变的集合。可变集合可以在适当的地方被更新或扩展。这意味着你可以修改,添加,移除一个集合的元素。而不可变集合类,相比之下,永远不会改变。不过,你仍然可以模拟添加,移除或更新操作。但是这些操作将在每一种情况下都返回一个新的集合,同时使原来的集合不发生改变。接下来我们将为大家介绍几种常用集合类型的应用:// 定义整型 Listval x = List(1,2,3,4)转载 2016-07-13 00:02:23 · 455 阅读 · 0 评论 -
Scala Set
简介Scala Set(集合)是没有重复的对象的容器,所有的元素都是唯一的。Scala 集合分为可变的和不可变的集合。默认情况下,Scala 使用的是不可变集合,如果你想使用可变集合,需要引用 scala.collection.mutable.Set 包。默认引用 scala.collection.immutable.Set,不可变集合实例如下:默认的不可变Setval set = Set(1,2,原创 2016-07-24 12:23:11 · 597 阅读 · 0 评论 -
Scala Map
简介Map(映射)是一种可迭代的键值对(key/value)结构,也就是我们常说的hash。所有的值都可以通过键来获取。 Map 中的键都是唯一的。 Map 也叫哈希表(Hash tables)。Map 有两种类型,可变与不可变,区别在于可变对象可以修改它,而不可变对象不可以。默认情况下 Scala 使用不可变 Map。如果你需要使用可变集合,你需要显式的引入 import scala.coll原创 2016-07-24 12:47:47 · 471 阅读 · 0 评论 -
Scala 元组
简介与列表一样,元组也是不可变的,但与列表不同的是元组可以包含不同类型的元素。 元组的值是通过将单个的值包含在圆括号中构成的。例如:元组定义val t = (1, 3.14, "Fred")t: (Int, Double, String) = (1, 3.14, "Fred") 以上实例在元组中定义了三个元素,对应的类型分别为[Int, Double, java.lang.String]。此外我原创 2016-07-24 15:25:00 · 648 阅读 · 0 评论 -
Scala Option(选项)
简介Scala Option(选项)类型用来表示一个值是可选的(有值或无值)。Option[T] 是一个类型为 T 的可选值的容器: 如果值存在, Option[T] 就是一个 Some[T] ,如果不存在, Option[T] 就是对象 None 。// 虽然 Scala 可以不定义变量的类型,不过为了清楚些,还是把类型显示的定义上// val myMap = Map[String, Strin原创 2016-07-24 15:38:13 · 692 阅读 · 0 评论 -
Scala Iterator(迭代器)
简介Scala Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法。迭代器 it 的两个基本操作是 next 和 hasNext。 - 调用 it.next() 会返回迭代器的下一个元素,并且更新迭代器的状态。 - 调用 it.hasNext() 用于检测集合中是否还有元素。让迭代器 it 逐个返回所有元素最简单的方法是使用 while 循环:val it = Iterator(原创 2016-07-24 15:48:45 · 4317 阅读 · 0 评论 -
Scala 类和对象
简介类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板。可以使用 new 关键字来创建类的对象,实例如下:class Point(xc: Int, yc: Int) { var x: Int = xc var y: Int = yc def move(dx: In原创 2016-07-24 16:05:17 · 458 阅读 · 0 评论 -
Scala Trait(特征)
简介Scala Trait(特征) 相当于 Java 的接口,实际上它比接口还功能强大。与接口不同的是,它还可以定义属性和方法的实现。一般情况下Scala的类只能够继承单一父类,但是如果是 Trait(特征) 的话就可以继承多个,从结果来看就是实现了多重继承。Trait(特征) 定义的方式与类类似,但它使用的关键字是 trait,如下所示:trait Equal { def isEqual(x:转载 2016-07-24 16:14:35 · 493 阅读 · 0 评论 -
Scala 模式匹配 match-case
简介cala 提供了强大的模式匹配机制,应用也非常广泛。 一个模式匹配包含了一系列备选项,每个都开始于关键字 case。每个备选项都包含了一个模式及一到多个表达式。箭头符号 => 隔开了模式和表达式。以下是一个简单的整型值模式匹配实例:def matchTest(x: Int): String = x match { case 1 => "one" case 2 => "two" ca原创 2016-07-24 16:23:17 · 4731 阅读 · 0 评论 -
Scala 正则表达式
简介Scala 通过 scala.util.matching 包种的 Regex 类来支持正则表达式。以下实例演示了使用正则表达式查找单词 Scala import scala.util.matching.Regexval pattern = "Scala".rval str = "Scala is Scalable and cool"println(pattern findFirstIn str原创 2016-07-24 16:28:53 · 568 阅读 · 0 评论 -
Scala 异常处理
简介Scala 的异常处理和其它语言比如 Java 类似。Scala 的方法可以通过抛出异常的方法的方式来终止相关代码的运行,不必通过返回值。抛出异常Scala 抛出异常的方法和 Java一样,使用 throw 方法,例如,抛出一个新的参数异常:throw new IllegalArgumentException捕获异常异常捕捉的机制与其他语言中一样,如果有异常发生,catch字句是按次序捕捉的。因转载 2016-07-24 16:34:27 · 1446 阅读 · 0 评论 -
Scala 提取器(Extractor)
提取器是从传递给它的对象中提取出构造该对象的参数。Scala 标准库包含了一些预定义的提取器,我们会大致的了解一下它们。Scala 提取器是一个带有unapply方法的对象。unapply方法算是apply方法的反向操作:unapply接受一个对象,然后从对象中提取值,提取的值通常是用来构造该对象的值。 以下实例演示了邮件地址的提取器对象:object Test { def main(arg转载 2016-07-24 16:41:06 · 540 阅读 · 0 评论 -
Scala 不可变 List 方法
创建列表val days = List("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday")val days1 = "Sunday"::"Monday"::"Tuesday"::"Wednesday"::"Thursday"::"Friday"::"Saturday"::Nildays: Lis转载 2016-07-24 11:48:30 · 1454 阅读 · 0 评论 -
Scala 不可变 List
简介Scala 集合分为可变的和不可变的集合。可变集合可以在适当的地方被更新或扩展。这意味着你可以修改,添加,移除一个集合的元素。而不可变集合类,相比之下,永远不会改变。不过,你仍然可以模拟添加,移除或更新操作。但是这些操作将在每一种情况下都返回一个新的集合,同时使原来的集合不发生改变。接下来我们将为大家介绍几种常用集合类型的应用:// 定义整型 Listval x = List(1,2,3,4)转载 2016-07-13 16:03:17 · 1042 阅读 · 0 评论 -
Scala-数组(2)
一维数组先声明一个数组,再初始化val array = new Array[Double](5) array: Array[Double] = Array(0.0, 0.0, 0.0, 0.0, 0.0)array(0) = 1arrayres2: Array[Double] = Array(1.0, 0.0, 0.0, 0.0, 0.0)赋值方式: array(index) = valu原创 2016-07-24 10:39:36 · 483 阅读 · 0 评论 -
Scala 数组(1)
使用它前我们需要使用 import Array._ 引入包。 Scala 语言中提供的数组是用来存储固定大小的同类型元素,数组对于每一门编辑应语言来说都是重要的数据结构之一。数组的第一个元素索引为0,最后一个元素的索引为元素总数减1。声明数组定义var z:Array[String] = new Array[String](3)var z = new Array[String](3)以上语法中,z原创 2016-07-12 23:35:58 · 715 阅读 · 0 评论 -
Scala 数据类型
Scala 与 Java有着相同的数据类型,下表列出了 Scala 支持的数据类型:上表中列出的数据类型都是对象,也就是说 scala 没有 jav a中的原生类型。在 scala 是可以对数字等基础类型调用方法的。Scala 基础字面量Scala 非常简单且直观。接下来我们会详细介绍 Scala 字面量。整型字面量整型字面量用于 Int 类型,如果表示 Long,可以在数字后面添加 L 或者小写转载 2016-07-12 18:10:54 · 488 阅读 · 0 评论 -
Scala 变量
变量是什么?变量是一种使用方便的占位符,用于引用计算机内存地址,变量创建后会占用一定的内存空间。基于变量的数据类型,操作系统会进行内存分配并且决定什么将被储存在保留内存中。因此,通过给变量分配不同的数据类型,你可以在这些变量中存储整数,小数或者字字母。变量声明在学习如何声明变量与常量之前,我们先来了解一些变量与常量。一、变量: 在程序运行过程中其值可能发生改变的量叫做变量。如:时间,年龄。二、常转载 2016-07-12 18:25:22 · 541 阅读 · 0 评论 -
Scala 访问修饰符
Scala 访问修饰符基本和 Java 的一样,分别有:private,protected,public。 如果没有指定访问修饰符符,默认情况下,Scala 对象的访问级别都是 public。 Scala 中的 private 限定符,比 Java 更严格,在嵌套类情况下,外层类甚至不能访问被嵌套类的私有成员。私有 ( Private ) 成员用private关键字修饰,带有此标记的成员仅在包含转载 2016-07-12 19:55:35 · 472 阅读 · 0 评论 -
Scala 运算符
一个运算符是一个符号,用于告诉编译器来执行指定的数学运算和逻辑运算。 Scala 含有丰富的内置运算符,包括以下几种类型:算术运算符关系运算符逻辑运算符位运算符赋值运算符接下来我们将为大家详细介绍以上各种运算符的应用。算术运算符下表列出了 Scala 支持的算术运算符。 假定变量 A 为 10,B 为 20: 实例:object Test { def main(args: Ar原创 2016-07-12 20:33:56 · 3368 阅读 · 0 评论 -
Scala程序hello world
Scala 基础语法Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的。 我们可以认为 Scala 程序是对象的集合,通过调用彼此的方法来实现消息传递。接下来我们来理解下,类,对象,方法,实例变量的概念:对象 : 对象有属性和行为。例如:一只狗的状属性有:颜色,名字,行为有:叫、跑、吃等。对象是一个类的实例。类 : 类是对象的抽象,而对象是类的具体实例。方法 :转载 2016-07-12 17:51:59 · 1249 阅读 · 0 评论 -
Scala if -- else 语句
if 语句if 语句有布尔表达式及之后的语句块组成。语法if(布尔值){代码块//布尔值为True,就执行代码块}实例object Test6 { def main(args:Array[String]): Unit ={ var x = 10; if (x < 20){ println("x < 20") } }}if…else 语句语法 //原创 2016-07-12 20:43:44 · 1335 阅读 · 0 评论 -
Scala 循环语句
循环类型Scala 语言提供了以下几种循环类型。点击链接查看每个类型的细节。while语法while(condition){ statement(s);}示例object Test { def main(args: Array[String]) { // 局部变量 var a = 10; // while 循环执行 while( a <原创 2016-07-12 20:59:10 · 991 阅读 · 0 评论 -
Scala break 语句
语法// 导入以下包import scala.util.control._// 创建 Breaks 对象val loop = new Breaks;// 在 breakable 中循环loop.breakable{ // 循环 for(...){ .... // 循环中断 loop.break; }}实例import scala原创 2016-07-12 21:39:17 · 719 阅读 · 0 评论 -
Scala 函数
函数声明Scala 函数声明格式如下:def functionName ([参数列表]) : [return type]如果你不写等于号和方法主体,那么方法会被隐式声明为”抽象(abstract)”,包含它的类型于是也是一个抽象类型。函数定义方法定义由一个def 关键字开始,紧接着是可选的参数列表,一个冒号”:” 和方法的返回类型,一个等于号”=”,最后是方法的主体。 Scala 函数定义格式如下原创 2016-07-12 22:42:12 · 2216 阅读 · 0 评论 -
Scala 闭包(闭包是一个函数)
闭包是一个函数,返回值依赖于声明在函数外部的一个或多个变量。 闭包通常来讲可以简单的认为是可以访问一个函数里面局部变量的另外一个函数。换句话说,闭包这个函数使用了函数外的变量。 如下面这段匿名的函数:val multiplier = (i:Int) => i * 10 在 multiplier 中有两个变量:i 和 factor。其中的一个 i 是函数的形式参数,在 multiplier 函数原创 2016-07-12 22:47:18 · 590 阅读 · 0 评论 -
Scala 字符串
scala字符串说明object Test { val greeting: String = "Hello,World!" def main(args: Array[String]) { println( greeting ) }}以上实例定义了变量 greeting,为字符串常量,它的类型为 String (java.lang.String)。 在 Scala 中,原创 2016-07-12 23:15:09 · 705 阅读 · 0 评论 -
Scala 文件 I/O
从文件上读取内容从文件读取内容非常简单。我们可以使用 Scala 的 Source 类及伴生对象来读取文件。以下实例演示了从 “test.txt”文件中读取内容import scala.io.Sourceobject Test { def main(args: Array[String]) { println("文件内容为:" ) Source.fromFile("tes转载 2016-07-24 16:47:52 · 481 阅读 · 0 评论