scala 学习之: list.fill 用法
摘要:题目描述: 根据List中的元素,将其展开, 与之前的encodeList 做相反的操作。 思路: 使用之前提到的foldLeft函数, 从左到右遍历List,将其每一个元组展开,放入初始值里面。 代码: List.fill: 向集合中插入n个类型为A的元素。
阅读全文
scala 学习之:list span 用法
摘要:题目描述: 如果一个list中有相同的元素,则将相同的元素放到一个新的list中,最后返回list[list] scala List span 函数: 定义: 即span 根据输入的bool表达式,将list进行分割。返回一个list集合。但是碰到第一个不满足的元素,即返回。如: list 的par
阅读全文
scala 学习之:List fold, foldLeft方法
摘要:先从一道题开始看: 题目的意思是,去除list中重复的元素, 并且保持其相对顺序。 看到这个题目,我的第一想法是,遍历list中的各个元素,将其放入到新的list中(如果新的list不包含该元素),最后返回新的list。 代码如下: 参考了该博客后: http://blog.thedigitalca
阅读全文
scala学习之: Flatten a nested list structure
摘要:题目要求: 参考:http://blog.thedigitalcatonline.com/blog/2015/04/07/99-scala-problems-07-flatten/#.WBsDFPl97IU 针对一个list, 将其内部嵌套的元素拿出来,形成一个新的list。 思路: 使用flatM
阅读全文
scala 学习: 逆变和协变
摘要:scala 逆变和协变的概念网上有很多解释, 总结一句话就是 参数是逆变的或者不变的,返回值是协变的或者不变的。 但是为什么是这样的? 协变: 当s 是A的子类, 那么func(s) 是func(A)的子类。 也就是被参数化类型的泛化方向与参数类型的方向是一致的,所以称为协变。 个人理解的func(
阅读全文
scala 学习: case class
摘要:case class: 1.定义为case class 的类在实例化时,可以不使用new 关键字。 2. 定义为case class 的类 默认实现了 equals 和hashcode 方法 3. 默认是可序列化的 4. 其构造函数的参数 是public 访问的。如 zhangsan.name 5.
阅读全文
scala 学习:object 和class, trait
摘要:object: Scala中没有静态修饰符,static,在object下的成员全部都是静态的,如果在类中声明了与该类相同的名字的object则该object是该类的“半生对象”, 可以理解把类中的static集中放到了object对象中,伴生对象和类文件必须是同一个源文件,可以用伴生对象做一些初始
阅读全文
scala学习:apply方法
摘要:摘抄两段话: 举个例子: 输出为: apply method called, key is: key1Hello World! update方法:
阅读全文
scala 闭包的概念
摘要:闭包本质上是一个函数和其引用的变量的统一定义,它的返回值依赖于这个函数外部的一个或者多个变量。 这里 i是一个形参, 随着函数的调用传入不同的值 。而more是一个自由变量。 依照函数的字面量(个人理解为函数名)在运行时创建函数对象被称作闭包,通过捕获自由变量的绑定,从而对函数字面量执行的关闭动作。
阅读全文
函数式编程的两种指导理念
摘要:1. 函数是头等值。 在函数编程中,函数也是值,与整数和字符串处于同一地位。 函数可以当做参数传递给其他函数。 函数可以当作结果从函数中返回 函数可以保存在变量中 函数中可以定义其他函数, 并且可以定义匿名函数,随意插入到代码的任何位置 2. 程序的操作应该把输入值映射为输出值, 而不是就地的修改数
阅读全文