(7)->用来指定映射Map中的键值关系。 (8)的迭代器。 (9)下划线_在Scala中被用作占位符表示匿名函数参数或作为引入package的通配符。...九,集合 集合是一种不可变的类型,并且是无顺序的,适合查找某个元素是否在集合中。 ? ? 十,映射Map 映射和Python中的字典很像,但是Scala中的Map是一种不可变类型。...十八,匿名函数 Scala中的函数是一等公民,可以像变量一样定义和使用。 和变量一样,函数具有类型和值。...函数的类型是函数的参数和返回值的类型映射关系, 如 Int => Unit , (Array[Int],String) => Int 。...函数的值是函数的参数和返回值的取值映射关系, 如 x => x+1 x,y => x+y 。 使用这种方式声明的函数叫做匿名函数。 此外,当函数表达式中引用了非参数的变量时,这种函数叫做闭包。
2.2 Scala变量声明 和java类似,Scala中的变量需要在创建时进行声明,有var和val两种声明方式,其中val类型变量定义后不可以重新赋值,而var类型变量声明之后可以自由赋新值,下面在...= 1.0 scala> val z:String="scala" z: String = scala 而事实上,即使你在Scala中声明变量时不进行类型的指定,Scala内部也会根据你输入数据的具体类型进行判断...[Int] = ArrayBuffer(0, 1, 4, 5) 2.4.2 Map映射 与Python中的字典相似,Scala中的映射就是键值对的集合Map,默认情况下Scala中同样是使用不可变的映射...6.为可变映射更新或新增键值对 //更新已有的可变Map映射中指定键的值,若不存在此键则创造新键值对 scala> DemoMap("Julia") = 100 scala> DemoMap res1...,Scala中的列表被设计来存放各种类型的元素,且Scala中的列表类型有三种模式,一种是当列表内部元素类型统一时,如List[Int],一种是当列表中同时包含几种不同类型元素时,为List[Any],
列表 Scala中的列表与之前分享的数组有一些相似之处,例如列表中的元素也需要具有相同的数据类型、对于不可变列表而言,其长度也是固定的。...但也有一些差异,例如对于不可变数组的创建,需要提前指定数组元素的长度,而不可变列表无需指定长度便可直接构造、数组属于可变对象(即数组的元素可以被修改),而列表不是可变对象。...接下来所要介绍的内容不局限于不可变列表,可变列表也具有相同的操作权限。...,所不同的是,列表中的元素是同类型的,元组的元素可以是不同类型的。...A 100002345 映射的构造 映射与Python的字典类似,映射的元素是由一对键值对构成的,映射也分为不可变映射和可变映射。
Array的创建有两种方式,一种是直接指定元素完成初始化,另一种是指定数据类型和长度,而不提供初始数据。...04 Map 与Set类似,Map也是编程语言中的一种常用数据结构,用于表达映射关系,在Python中就是字典数据结构dict,通过提供键值对的访问方式,可以以O(1)的复杂度完成数据的访问和赋值。...在Scala中,Map也区分可变和不可变映射,且为同名类,如果需要创建可变Map,则需在适当位置import相应类即可。...例如,Map的每个键值对实际上都是一个二值元组,而正因为二值元组可以支持两种不同的数据类型,才保证了Map定义的多样性。...Tuple类型共有的,且第一种更为简洁通用;第三种属于二值元组所特有的,毕竟二值元组是Map中的对象类型,具有一定的特殊性。
+(b).Scala中可以将方法调用的.省略:如1.to(10) 类似于1 to 10。 4、没有++操作符,因为Scala中大部分的算术类型都是不可变的如Int类型。...第五章:类 1、简单类和无参方法:字段和方法默认是public的,字段必须初始化,类不用声明为public的,一个文件中可以包含多个类并且公有可见。...apply方法常用于伴生对象中用来构造对象而不显示的使用new,而update方法常被用于数组和映射中改值使用。...可变序列与java中的大体类似 4、列表:在Scala中列表要么是空的要么是一个head元素加上一个tail元素而tail元素又是一个链表,我的思路是:嵌套链表,以head开始tail嵌套。...比如map的get方法在java中可能返回为null而导致出现NullPointerException异常,而Scala中返回的是一个Option[T]类型当值不存在时为None,存在时返回Some(T
Map Scala映射(Map)是一组键/值对的对象。键在映射中是唯一的,但值不一定是唯一的。映射也称为哈希表。映射有两种,不可变的和可变的。默认情况下,Scala使用不可变映射(Map)。...如果要使用可变集合(Map),则需要明确导入scala.collection.mutable.Map类 val map = Map("name" -> "xiaoming","age" ->20) println...(map("name")) 声明空的映射是,不能省略类型说明,向映射(Map)添加一个键值对,可以使用运算符+ var m :Map[String,Int]= Map() m +=...("one"->1) 判断map中是否包含某个值,可以使用contains方法 if(map.contains("age")){ println(map("age")) } 如果需要创建可变映射...map("gender") = "cumputer" for((k,v) <- map){ printf("%s->%s\n",k,v) } 也可以只遍历映射中的
Scala 的集合有三大类:序列 Seq、集 Set、映射 Map,所有的集合都扩展自 Iterable特质。...类似于 java 中的 String 对象。 可变集合,就是这个集合可以直接对原对象进行修改,而不会返回新的对象。...类似 于 java 中 StringBuilder 对象 Scala中的集合都是引用类型,并不关心指向的对象中的内容,只关心当前指向的对象。...scala中的String就是java.lang.String,和集合无直接关系,所以是虚箭头,是通过Perdef中的低优先级隐式转换来做到的。经过隐式转换为一个包装类型后就可以当做集合了。...元素key -> value 键值对儿,为二元组类型。
二 :Scala基础 1:变量声明 在Scala中,允许在声明变量是可变的还是不可变(只读)的,不可变的用val关键字声明: val str : String = "hello scala" 上例就是声明了一个...String 类型的字符串str 并赋值为"hello scala" val 在声明时必须被初始化 一个可变变量用关键字var来声明,var声明的变量是可变的,声明后可以再次对其赋值,但是也必须在声明的同时立即初始化...,Scala并不区分基本类型和引用类型,对于它来讲所以得类型都是一个类 在Scala中,我们用方法而不是强制类型转换来做数值类型之间的转换 4:方法声明 Scala 中声明方法的结构如下: def hello...声明了可变的 var 变量或不可变的 val 变量,没有进行初始化。...(例如,在类中的 抽象声明,如 val book: String, var count: Int)。 所有的方法参数(如 def deposit(amount: Money) = {… })。
语法中,类并不声明为public,所有这些类都具有公有可见性(即默认就是public)。...基本语法 [修饰符] class 类名 { 类体 } package com.atguigu.chapter06 //(1)Scala语法中,类并不声明为public,所有这些类都具有公有可见性...类似于java中的String对象。 可变集合,就是这个集合可以直接对原对象进行修改,而不会返回新的对象。类似于java中StringBuilder对象。...中的Map和Java类似,**也是一个散列表,它存储的内容也是键值对(key-value)**映射。...样例类是为模式匹配而优化的类,因为其默认提供了unapply方法,因此,样例类可以直接使用模式匹配,而无需自己实现unapply方法。
是的,在Scala里,你可以放心大胆地使用vals="ABC",而Scala里强大的类型推断和模式匹配,绝对会让你爱不释手。...; 在Scala中,语句末尾的分号是可选的; Scala默认类访问修饰符为public; 注意println("测试信息")这一行,将在主构造函数里执行; val与var两者对应Java声明的差异性已在反编译代码中体现了...Scala提供了可变(mutable)与不可变(immutable)的集合类型版本,多线程应用中应该使用不可变版本,这很容易理解。...Array:数组是可变的同类对象序列; Set:无序不重复集合类型,有可变和不可变实现; Map:键值对的映射,有可变和不可变实现; Tuple:可以包含不同类元素,不可变实现; List:Scala的列表是不可变实现的同类对象序列...我们的Scala之旅就要告一个段落了!Scala功能丰富而具有一定挑战度,上述三块内容,每一块都值得扩展详述,但由于篇幅关系,在此无法一一展开。
在Java中,达到类似的目的就是这种代码: String x = true ? "true string" : "false string" Scala中没有?...case 3 m=> result = "..." } return result; } 使用模式匹配提供的面向表达式语法改进代码: (result改为了 val类型,模式匹配能够判断唯一的值和类型...case 3 =>"..." } return result } 最终改进结果 模式匹配是这个方法唯一一个语句,而它返回个字符串类型的表达式- - def createErrorMessage...case _ = >"....." } 并发: 创建个索引服务,用键值来查找特定项。服务由两个方法构成,lookUp方法根据key的索引查找值,insert方法插入新值, 基本是个键值对的映射。...Scala的惯例是不要把null或未初始化的参数传给函数。
[String,Int] = Map(Alice -> 90, Kim -> 89, Bob -> 98) 上面构造了一个不可变的Map[String, Int],其值也不能被改变.如果想要一个可变映射...更新映射中的值 在可变映射中,可以更新某个映射的值,也可以添加一个新的键值对: scala> val scores = scala.collection.mutable.Map("Alice" ->...,但是我们利用一些操作产生一个新的映射,并可以对原映射中的键值对进行修改或者添加新的键值对: scala> val scores = Map("Alice" -> 90, "Kim" -> 89, "...[String,Int] = Map(Alice -> 90, Kim -> 78, Bob -> 98, Tom -> 54) 上例中scores是不可变映射,我们在它基础上对”Kim”进行了修改,添加了...元组Tuple 元组是不同类型的值的聚合,元组的值通过将单个的值包含在圆括号中构成的: scala> val bobScore = (1, 98.5, "Bob") bobScore: (Int, Double
八,数组Array Java 中的数组和 C++中的数组很像,其长度是不可变的,但是数组中的元素内容是可以改变的。 数组是引用类型,一般是用花括号{}作为数组范围标识。...十,映射Map Map是一种无序数据结构的接口,存储键值对(key,value)。 Map的常用实现是HashMap, LinkedHashMap, TreeMap。...Java 中的 interface具有和 Scala中的 trait相似的功能。 一个class只能继承自一个父类,但可以继承自多个接口。...interface中的所有方法都默认为抽象方法,因此无需关键字abstract声明。 interface的非抽象方法用default关键字声明,叫做default方法。...Java 声明变量时,先声明类型,再声明变量名,而Scala则先变量名,必要时用冒号说明类型,类似Python。
Scala高级 一、集合 Scala 的集合有三大类:序列 Seq、集 Set、映射 Map,所有的集合都扩展自 Iterable 特质,在 Scala 中集合有可变(mutable)和不可变(immutable...2) List 在 scala 包对象声明的,因此不需要引入其它包也可以使用 3) val List = scala.collection.immutable.List 4) List 中可以放任何数据类型...,比如 arr1 的类型为 List[Any] 5) 如果希望得到一个空列表,可以使用 Nil 对象, 在 scala 包对象声明的,因此不需要引入其它包也可以使用 scala val list = List...–Map 1) Scala 中的 Map 和 Java 类似,也是一个散列表,它存储的内容也是键值对(key-value)映射,Scala 中不可变的 Map 是有序的,可变的 Map 是无序的。...2) 样例类用 case 关键字进行声明。 3) 样例类是为模式匹配(对象)而优化的类。 4) 构造器中的每一个参数都成为 val——除非它被显式地声明为 var(不建议这样做)。
4、其他的小结参考不可变集合。 10.4 数组-定长数组(声明泛型) 10.4.1 第一种方式定义数组 说明:这里的数组等同于 Java 中的数组,中括号的类型就是数组的类型。... Java 中的数组,中括号的类型就是数组的类型。 ...中的 Map 回顾 HashMap 是一个散列表(数组+链表),它存储的内容是键值对(key-value)映射,Java 中的 HashMap 是无序的,key 不能重复。...中的 Map 介绍 Scala 中的 Map 和 Java 类似,也是一个散列表,它存储的内容也是键值对(key-value)映射,Scala 中不可变的 Map 是有序的,可变的 Map 是无序的...10.10.2 Map 的创建 方式1-构造不可变映射 Scala 中的不可变 Map 是有序,构建 Map 中的元素底层是 Tuple2 类型。
3 基本语法规则 3.1 变量声明 val用于定义不可变变量,var用于定义可变变量,这里的"可变"指的是引用的可变性。...lastNumber = 0 def newUniqueNumber() = { lastNumber += 1; lastNumber } } 因为Accounts是一个单例对象,可以直接使用而无需初始化...Scala中默认使用的类都是不可变的,所以如果你想改变value的值需要借助copy方法: val newAmound = amount.copy(value = 1000.0) Scala中的模式匹配还可以实现更复杂的匹配...在Scala中默认的集合类例如List,Set,Map,Tuple等都是不可变的,所以调用其修改方法会返回一个新的实例。...如果要使用可变集合,请使用scala.collection.mutable包下相应的类。不可变类型在编写并发代码时很有用。
/scala export PATH=${SCALA_HOME}/bin:$PATH 变量、基础数据类型 Scala中变量不需要显示指定类型,但需要提前声明。...Scala有一个很强大的类型自动推导功能,它可以根据右值及上下文自动推导出变量的类型。你可以通过如下方式来直接声明并赋值。...Scala可以如动态语言似的编写代码,但又有静态语言的编译时检查。这对于Java中冗长、重复的类型声明来说是一种很好的进步。 注:在RELP中,val变量是可以重新赋值的,这是`RELP`的特性。...和Java不同的是,Scala中没在区分原生类型和装箱类型,如:int和Integer。它统一抽象成Int类型,这样在Scala中所有类型都是对象了。...unit和unit2变量的类型是Any,这是因为else语句的缺失,Scala编译器就按最大化类型来推导,而Any类型是Scala中的根类型。
映射也可以构建出可变和不可变映射两类。...构建一个不可变的映射: scala> val scores = Map(“Alice” -> 10, “Bob” -> 20, “Cindy” -> 30) 构建一个可变映射方法如下: scala> val...scores = scala.collenction.mutable.Map(“Alice” -> 10, “Bob” -> 20, “Cindy” -> 30) 也可以先构建一个空格的映射开始,但是必须指定类型参数...scores(“Bob”) = 10 或者使用 += 操作,同样的也可以使用-=移除某个键值对。...scala> scores -= “Alice" 这里要注意的是不能更新一个不可变的映射,但是可以将操作结果传给新的映射。