var 可变,可重新赋值,赋值为"_"表示缺省值(0, false, null),例如:
var d:Double = _ // d = 0.0 var i:Int = _ // i = 0 var s:String = _ // s = null
val不可变
val (x,y) = (10, "hello")
def 实时返回结果变量,可作为方法返回结果,方便使用
def t = System. currentTimeMillis // 每次不一样
类型转化:
1强转换
var i = 10.asInstanceOf[Double] //类型强制 println(i) println(List('A','B','C').map { x => (x+32).asInstanceOf[Char] })
在强转换Array[Object]到Array[String]则会报错,建议arr.map{x=>x.toString//加上的处理什么的}
2.implicit隐式转化
implicit def typeConvertor(input:Int):String = input.toString implicit def typeConvertor(input:Boolean):String = if(input) "true" else "false"
display("1212") display(12) display(true)
3.表示Array转为普通序列
val options = parse(args2:_*)
def parse(x:Int*) = { for(i <- x) println(i) }
----
集合
集合map方法:
//transation的map方法,seq,list,map... var arr1 = Seq(1,2,3,4,5) var maparr = arr1.map(p=>{ p+10 })
1.List是不可变的,Tuple可以包含不同元素
var arr2 = List(1,2,3,4,5,1) println(arr2.map { case(a) => a+1})
2.Map
var maptest = Map(1->2,3->4,5->6,1->5) println(maptest.map{case(k,v)=>k})
//map 1是key,2是value println(maptest.map(_._1)) println(maptest.map(_._2))
3.Seq 去重集合
println(arr2(0)) println(arr1(0)) println((1,2,3)._1) var ttt = Set(1,2,3) ttt+=1
4.Array定长集合,可变内容,不变长度,和java交互式,一般集合转为此类
var pathList = new Array[String](list.size()) for(i <- 0 to list.size()-1){ pathList(i)=list.get(i) } pathList = pathList.map { x => path+pathSeperate+x }
5.ArrayBuffer 变长变内容的集合
private var cis=ArrayBuffer[(String,Option[ZkDTState],Option[String],Option[Array[String]])]();
for(po <- list){ var stat = readContent(zkclient,po._1+pathSeperate+pathContent,po._2) var nodes = readchildNodesInfo(zkclient, po._1+pathSeperate+pathNodes) var active = readChildActiveNodeInfo(zkclient, po._1+pathSeperate+pathActive) cis.+=((po._1,stat,active,nodes)) }
6.集合的filter,groupBy方法:
println("相同的arr2元素分到一个组,并过滤大于1"+arr2.groupBy(groupm).filter{case(a,b) => (a>1)}.keys)
groupBy方法按照函数参数groupm分组
def groupm[A](x:A):A=x;
将相同的元素分到一个组里,返回map[Int,List[Int]]
filter方法,(a,b),a是groupBy返回的值Int,b是集合arr2中相同的元素集合List[Int]
最终过滤值大于1的,获得map的key
这一行的作用是去重
相关推荐
你会学习到Scala的语法结构,包括变量声明、常量、数据类型(如基本类型、引用类型、集合类型)、运算符、流程控制语句(如if-else、for循环、while循环)以及函数和方法的定义。此外,你还将了解Scala的模式匹配和...
- **知识点概述**:Scala中的变量分为两种类型:不可变的val和可变的var。 - **详细解析**: - **val a = 3**:定义一个不可变变量a并赋值为3。 - **var b: Int = 3; b = 6**:定义一个可变变量b并赋值为3,然后...
15. **Java 集合与 Scala 集合的转换**: - 导入 `scala.jdk.CollectionConverters`,可以使用 `.asJava` 和 `.asScala` 转换。 16. **函数 values**: - 编写一个函数,根据给定区间和函数,生成对应的输入输出...
1. **Scala基础**:Scala的基础包括变量定义、数据类型(如Int、Double、String等)、运算符、流程控制(如if-else、for循环、while循环)等。课后习题可能涉及到编写简单的程序来理解这些概念。 2. **面向对象编程...
8. **集合库**:Scala的集合库非常强大,提供了各种操作和转换,如map、filter、reduce等。集合可以被视作惰性序列,允许延迟计算和高效处理大量数据。 9. **类型类**:类型类是一种设计模式,允许在运行时添加功能...
- 函数:Scala将函数视为一等公民,可以作为变量赋值、作为参数传递和作为返回值。函数字面量和高阶函数是其重要特点。 - 语法:Scala的语法紧凑且富有表达力,例如模式匹配和for推导式。 2. **类型系统** - ...
4. **集合框架**:Scala的集合库非常强大,包含了列表、数组、映射(Map)、集(Set)等多种数据结构。它们支持函数式编程操作,如map、filter、fold等。 5. **模式匹配**:Scala的模式匹配允许对值进行解构,用于...
5. **集合库**:Scala的集合库强大且高效,提供了丰富的操作,如map、filter和reduce等。 在压缩包中,我们只看到了"scala-2.12.14"这一条子文件名,这可能是指Scala的二进制分发包,其中包括Scala解释器、编译器和...
1. **Variables(变量)**:Scala支持多种变量类型,包括`val`用于声明不可变变量和`var`用于声明可变变量。这种设计有助于提高代码的可读性和维护性。 2. **Functions(函数)**:Scala中的函数是一等公民,可以...
8. **强大的集合库**:Scala的集合库提供了丰富的操作和转换,如map、filter和fold,这些操作在处理数据时非常高效。 9. **DSL设计**:由于其表达力强,Scala非常适合构建领域特定语言(DSL),这使得开发人员能够...
这个“快学Scala 课后习题答案集合-中文版”涵盖了Scala学习中的关键知识点,包括注解(第十五章)和高级类型(第十八章)等主题。下面将对这些主题进行详细的解释。 **注解(Annotations)** 在Scala中,注解是一种元...
另外,Scala有丰富的集合API,这些集合支持丰富的函数式操作,如map、filter和reduce,它们使数据处理变得简单且易于理解。 Scala的类型系统非常强大。它采用了静态类型,每个值都有其特定的类型,这在编译时就能...
4. **集合库**:Scala的集合库强大且高效,包含List、Set、Map等多种数据结构,并且它们都是惰性求值的。集合操作如map、filter、fold等都是函数式编程的常见操作,能够编写出简洁、易读的代码。 5. ** Trait**:...
2. **函数式编程**:Scala支持高阶函数,函数可以作为一等公民,可以赋值给变量、作为参数传递和作为返回值。另外,函数可以匿名定义,即Lambda表达式,以及使用`map`、`filter`、`reduce`等函数式操作对集合进行...
2. **配置环境变量**:将Scala的bin目录添加到系统PATH环境变量中,这样可以在命令行中直接运行`scala`命令。 3. **验证安装**:在终端中输入`scala -version`,如果正确设置,你应该能看到Scala 2.12.7的版本信息。...
1. **变量声明**:Scala有两种变量类型,val(不可变)和var(可变)。例如,`val x = 10` 和 `var y = 20`。 2. **数据类型**:Scala有基本类型(如Int、Double、Boolean等)和引用类型(如String、Array等)。 3. ...
6. **集合库**:Scala的集合库非常强大,提供了各种操作和转换方法,支持高效的并行处理。 7. ** Actors模型**:Scala内置了Actors模型,用于并发编程,它基于消息传递,提供了一种安全的处理并发问题的方式。 8. ...