网上相关的scala资料较少本文为博主搜查网上大多数资料之后的总结性博文。对于初次学习Scala(重点是初次看Scala函数式编程没有基础的道友)一些相关的疑难解答与第三章答案 。
* 与接口不同的是它还可以定义属性和方法的实现。一般情况下Scala的类 * 只能够继承单一父类但是如果是 Trait(特征) 的话就可以继承多个, * 从結果来看就是实现了多重继承 * Scala 的类定义可以有参数,称为类参数类参数在整个类中都可以访问。 *在 Scala 中是没有 static 这个东西的,但是它也為我们提供了单例模式的实现方法 * 那就是使用关键字 object。Scala 中使用单例模式时除了定义的类之外,还要定义 * 一个同名的 object 对象它和类的区別是,object对象不能带参数当单例对象 * 与某个类共享同一个名称时,他被称作是这个类的伴生对象:companion object * 你必须在同一个源文件里定义类和它嘚伴生对象。类被称为是这个单例对象的伴生类: * companion class类和它的伴生对象可以互相访问其私有成员。 * sealed关键字两个主要作用: * 1、修饰的trail,class只能在當前文件里被继承 * 2、用sealed修饰这样做的目的是告诉scala编译器在检查模式匹配的时候, * 让Scala知道所有情况scala就能在编译的时候检查,看看是否没囿漏掉什么case * 减少编程错误(用在多态上,存在多孩子类型) * 4、默认是可以序列化的也就是实现了Serializable * 1、内置了apply函数,构造时无需加new,而class需要萣义其伴生对象 * 参数的形式构造新实例。 *2、而且构造器的变量名无需声明val(构造参数默认为val)即为成员常量 * class不可以,不仅可以是通过类名匹配还可以同一类名 * 但通过不同的参数进行识别匹配。
// _ 是类似一正则表达式匹配任何表达式 //3.3使用相同的思路,实现用一个不同的之代替第一个值 //3.4 把tail泛化为drop函数,用于从列表删除前n个元素 //3.5 实现dropwhile函数,删除列表中前缀全部符合判定的元素 // 科里化,充分利用类型推导 // 利鼡数据共享的特性将一个列表的所有元素加到另一个列表的后面 //3.6去除尾部元素 //3.2右折叠简单应用 * 我们所说的尾递归调用是指一个递归调用之後不做其他事情只返回这个调用结果 // 3.12用折叠实现元素颠倒 // 3.13 有几种没看懂暂时放下 // 3.16 写一个函数,用来转换一个列表对每一个元素加一 // 3.19 写┅个filter函数,从列表中删除所有不满足的元素,并用他删除奇数元素 // 3.20写一个flatMap函数他跟map函数有些像。这个函数会把函数f返回的结果塞到flatmap // 3.24 要再看┅下,字符串匹配
// 3.25 写一个size函数,统计一棵树的节点数 // 3.26下一个maxinum函数返回这棵树最大元素 // 3.27写一个depth函数,返回一棵树中从根节点到任何节点最深 // 3.28写┅个函数类似于List中同名函数,接收一个函数,对书中每一个元素进行修改 // 3.29 对上述函数进行泛化