快学Scala-第四章 映射和元组】的更多相关文章

数组 定长数组:在Scala中可以用Array,初始化一个定长数组.例如: val nums = new Array[Int](10) //10个整数的数组,所有元素初始化为0 val a = new Array[String](10) //10个元素的字符串数组,所有元素初始化为null val s = Array("Hello", "Scala") //长度为2的字符串数组 s(0) = "Hi" //使用()来访问数组中的元素,使得s变成A…
4 映射和元组  4.1 设置一个映射,当中包括你想要的一些装备,以及它们的价格.然后构建还有一个映射.採用同一组键,可是价格上打9折 映射的简单操作  ,"gun"->18,"ipad"->1000)   , gun -> 18, ipad -> 1000)      scala> for((k,v) <- map) yield (k,v * 0.9)   res3: scala.collection.immutable.Map…
知识点: 1.构造映射,映射是对偶的集合 val scores1 = Map("Alice" -> 10, "Bob" -> 7, "Cindy" -> 9) //不可变映射 // val scores1 = Map(("Alice",),("Bob",),("Cindy",)) val scores2 = scala.collection.mutable.Map(&q…
1. 编写一个Conversions对象,加入inchesToCentimeters.gallonsToLiters和milesToKilometers方法. object Conversions {     def main(args: Array[String]){         printf("1 inch = %g centimeters\n", inchesToCentimeters(1))         printf("2 gallons = %g liter…
Scala二维数组的定义: val arr2 = Array.ofDim[String](2, 2) arr2(0)(0) = "aa" arr2(1)(0) = "bb" for(i <- 0 until arr2.length; j <- 0 until arr2(0).length){ println(arr2(i)(j)) } Scala不规则数组定义: val tri = new Array[Array[Int]](2) tri(0) = ne…
1 简介 近期对Scala比较感兴趣,买了本<快学Scala>,感觉不错.比<Programming Scala:Tackle Multi-Core Complexity on the Java Virtual Machine>好很多. 是本不错的入门书.而且每个章节都设置了难度级别,每章有习题,可以巩固Scala语法. 本文的目的就是针对这些习题进行解答 2 基础  2.1 在Scala REPL中键入3,然后按Tab键.有哪些方法可以被应用? 这个....直接操作一遍就有结果了…
Robert Peng's Blog - https://mr-dai.github.io/ <快学Scala>Intro与第1章 - https://mr-dai.github.io/Scala-for-the-Impatient-1 <快学Scala>第2章(上):控制结构 - https://mr-dai.github.io/Scala-for-the-Impatient-2-1 <快学Scala>第2章(下):函数 - https://mr-dai.github…
trait的abstract override使用: 当我看到abstract override介绍的时候也是一脸懵逼,因为快学scala,只介绍了因为TimestampLogger中调用的super.log依旧是个abstract class,所以必须在方法前加上abstract和override.但是并没有具体介绍如何使用,然后查阅了其他文档,才明白使用方法. 下面的代码定义了超类LoggerEmpty,这个定义意味着该特质只能混入扩展LoggerEmpty的类中. 在特质中声明抽象方法中有…
Python第四章__装饰器.迭代器 欢迎加入Linux_Python学习群  群号:478616847 目录: 列表生成式 生成器 迭代器 单层装饰器(无参) 多层装饰器(有参) 冒泡算法 代码开发规范 一.列表生成式(列表推导式) 列表生成式List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式. 首先来上个需求,我有一个列表 [1,2,3,4,5,6,7,8,9,10],现在有这么个需求,要里面的元素自乘,想想看要怎么实现 版本一,通过fo…
1.数组 1.1定长数组和变长数组 object ArrayDemo { def main(args: Array[String]): Unit = { //初始化一个长度为8的定长数组,其数组元素均为0 val arr1 = new Array[Int](8) //直接打印定长数组,内容为数组的hashcode值 println(arr1) //将数组转换成数组缓冲,就可以看到原数组中的内容了 //toBuffer会将数组转成数组缓冲 println(arr1.toBuffer) //注意:如…
5 类  5.1 改进5.1节的Counter类,让它不要在Int.MaxValue时变成负数 class Count{ private var value = Int.MaxValue else value } def current = value } 5.2 编写一个BankAccount类,增加deposit和withdraw方法,和一个仅仅读的balance属性 ){ def deposit(){} def withdraw(){} } 5.3 编写一个Time类,增加仅仅读属性hou…
构造映射: val score = Map[String, Int]() val score1 = HashMap[String, Int]() val value1 = Map[String, Int]("aa" -> 1, "bb" -> 2) val value2 = Map[String, Int](("aa", 1), ("bb", 2)) 获取映射值: println(if(value2.contain…
3 数组相关操作  3.1 编写一段代码.将a设置为一个n个随机整数的数组,要求随机数介于0(包括)和n(不包括)之间  random和yield的使用 import scala.math.random def randomArray(n:Int)={ until n) yield (random * n).toInt } ).mkString(",")) 3.2 编写一个循环,将整数数组中相邻的元素置换.比如,Array(1,2,3,4,5)经过置换后变为Array(2,1,4,3,…
读取行: import scala.io.Source object FileReader { def main(args: Array[String]): Unit = { val source = Source.fromFile("F:\\scalaWorkspace\\ScalaLearning\\files\\test.txt", "UTF-8") val lineIterator = source.getLines() for (line <- li…
关于case class和普通class的区别,可以参考: https://www.iteblog.com/archives/1508.html…
基础 1.1 声明值和变量 在Scala中,鼓励使用val; 不需要给出值或变量的类型,这个信息可以从初始化表达式推断出来.在必要的时候,可以指定类型. 在Scala中,仅当同一行代码中存在多条语句时才需要用分号隔开. 1.2 常用类型 Scala 7中数值类型:Byte, Char, Short, Int, Long, Float和Double,以及Boolean类型.跟Java不同的是,这些类型是类.可以对数值执行方法,1.toString() Scala不需要类型包装,类型之间的转换是Sc…
转载: 1.变量声明 val answer = 8 * 5 + 2; //常量 var counter = 0;    //变量 //在必要的时候 ,可以指定类型 val greeting:String = null val greeting:Any = "Hello" //可以将多个值或变量放在一起声明 val xmax, ymax = 100 //xmax 和 ymax设为100 var greeting, message:String = null // 都被设为字符串,被初始化…
一.数组 1.定长数组和变长数组 import scala.collection.mutable.ArrayBuffer object TestScala { def main(args: Array[String]) { //初始化一个长度为8的定长数组,其所有元素均为0 val arr1 = ) //直接打印定长数组,内容为数组的hashcode值 println("arr1="+arr1) //将数组转换成数组缓冲,就可以看到原数组中的内容了 //toBuffer会将数组转换长数…
scala 1.   scala的由来 scala是一门多范式的编程语言,一种类似java的编程语言[2] ,设计初衷是要集成面向对象编程和函数式编程的各种特性. java和c++的进化速度已经大不如从前,那么乐于使用更现代的语言特性的程序员们正在将眼光移向他处.scala是一个很有吸引力的选择:事实上,在我看来,对于想要突破和超越java或者c++的程序员而言,scala是最具吸引力的一个.scala的语法十分简洁,相比java的样板代码,scala让人耳目一新.scala运行于java虚拟机…
控制结构和函数 1.在Scala中,几乎所有构造出来的语法结构都有值.这个特性是为了使得程序更加精简,也更易读. (1)if表达式有值 (2)块也有值——是它最后一个表达式的值 (3)Scala的for循环就像是“增强版”的Java for循环 (4)分号(在绝大多数情况下)不是必须的 (5)void类型是Unit (6)避免在函数定义中使用return (7)注意别在函数式定义中漏掉了= (8)异常的工作方式和Java中基本一样,不同的是catch语句中使用“模式匹配” (9)Scala没有受…
10 特质 10.1 java.awt.Rectangle类有两个非常实用的方法translate和grow,但可惜的是像java.awt.geom.Ellipse2D这种类没有. 在Scala中,你能够解决掉这个问题.定义一个RenctangleLike特质,增加详细的translate和grow方法. 提供不论什么你须要用来实现的抽象方法,以便你能够像例如以下代码这样混入该特质: val egg = new java.awt.geom.Ellipse2D.Double(5,10,20,30)…
第二章  控制结构和函数 1.条件表达式 (1)scala中if/else表达式有值,这个值就是跟在if或者else之后的表达式的值.如: if (x > 0) 1 else -1 这个表达式的值是1或者-1,具体是哪个值取决于x的值. 可以将这个if/else表达式的值赋给变量: val s = if (x>0) 1 else -1<=====> if (x>0) s=1 else s=-1 第一种方法更好,因为可以用来初始化一个val.第二种方法必须是var (2)Sca…
第一章 基础 1.安装scala解释器 (1)scala-2.12.1.msi (2)配置环境变量:SCALA_HOME = D:\Program Files\scala Path= %SCALA_HOME%\bin;%SCALA_HOME%\jre\bin; ClassPath =.;%SCALA_HOME%\bin;%SCALA_HOME%\lib\dt.jar;%SCALA_HOME%\lib\tools.jar.; (3)验证解释器是否安装成功. 进入命令行键入scala看是否成功 如上…
Actor 通过尽可能避免锁和共享状态,actor使得我们能够容易地设计出正确.没有死锁或争用状况的程序. Scala类库提供了一个actor模型的简单实现.AKKA是更高级的actor类库. 19.1 发送消息 actor是一个处理异步消息的对象.消息可以是任何对象.一个好的做法是使用样例类作为消息,这样就可以使用模式匹配来处理消息. 消息的发送是异步的:“发完就忘”.消息被送往目标actor,当前线程继续运行. 19.2 接收消息 发送到actor的消息被存在“邮箱”中.receive方法从…
集合 13.1 集合的三大类 所有的集合都扩展Iterable特质.集合的三大集合为Seq, Set, Map Seq是一个有先后次序的值的序列,比如数组或列表.IndexSeq允许我们通过整型下表快速访问任意元素.但是链表不可以. Set是一组没有先后次序的值.SortedSet中,元素排过序. Map时一组(键,值)对.SortedMap按键排序 每一个Scala集合特质或类都有一个带有apply方法的伴生对象. 13.2 可变和不可变集合 13.3 序列Sequence 不可变序列:Ind…