60.scala编程思想笔记——将序列与zip相结合
2016-01-04 22:00
218 查看
60.scala编程思想笔记——将序列与zip相结合
欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/50458721
源码下载连接请见第一篇笔记。
接受两个序列并将其配对使用这种做法经常很有用,称为链接。
例如:
import com.atomicscala.AtomicTest._
val left = Vector("a", "b","c", "d")
val right = Vector("q", "r","s", "t")
left.zip(right) is
"Vector((a,q), (b,r), (c,s), (d,t))"
left.zip(0 to 4) is
"Vector((a,0), (b,1), (c,2), (d,3))"
left.zipWithIndex is
"Vector((a,0), (b,1), (c,2), (d,3))"
将left与right结合在一起,所产生的结果是一个由元组构成的Vector,将这些元组是通过将left的每个元素与right中的每个元素配对而产生的。
如果只想在序列中的每个元素之上添加一个索引,那么可以使用专用于此目的的方法zipWithIndex.
放置数字时将其走位元组的第一个元素而不是第二个元素,如下:
import com.atomicscala.AtomicTest._
def number(s:String) =
Range(0,s.length).zip(s)
number("Howdy") is
Vector((0,'H'), (1,'o'), (2,'w'),
(3,'d'),(4,'y'))
注意,与字符串链接时会自动将String断开为一个个的字母。
最后体现以下zip和map结合如下:
import com.atomicscala.AtomicTest._
case class Person(name:String, ID:Int)
val names = Vector("Bob", "Jill","Jim")
val IDs = Vector(1731, 9274, 8378)
names.zip(IDs).map {
case (n, id)=> Person(n, id)
} is "Vector(Person(Bob,1731), " +
"Person(Jill,9274), Person(Jim,8378))"
其中zip产生name-id元组序列,会被传递给map.map方法可以应用函数,也可以应用match子句。
欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/50458721
源码下载连接请见第一篇笔记。
接受两个序列并将其配对使用这种做法经常很有用,称为链接。
例如:
import com.atomicscala.AtomicTest._
val left = Vector("a", "b","c", "d")
val right = Vector("q", "r","s", "t")
left.zip(right) is
"Vector((a,q), (b,r), (c,s), (d,t))"
left.zip(0 to 4) is
"Vector((a,0), (b,1), (c,2), (d,3))"
left.zipWithIndex is
"Vector((a,0), (b,1), (c,2), (d,3))"
将left与right结合在一起,所产生的结果是一个由元组构成的Vector,将这些元组是通过将left的每个元素与right中的每个元素配对而产生的。
如果只想在序列中的每个元素之上添加一个索引,那么可以使用专用于此目的的方法zipWithIndex.
放置数字时将其走位元组的第一个元素而不是第二个元素,如下:
import com.atomicscala.AtomicTest._
def number(s:String) =
Range(0,s.length).zip(s)
number("Howdy") is
Vector((0,'H'), (1,'o'), (2,'w'),
(3,'d'),(4,'y'))
注意,与字符串链接时会自动将String断开为一个个的字母。
最后体现以下zip和map结合如下:
import com.atomicscala.AtomicTest._
case class Person(name:String, ID:Int)
val names = Vector("Bob", "Jill","Jim")
val IDs = Vector(1731, 9274, 8378)
names.zip(IDs).map {
case (n, id)=> Person(n, id)
} is "Vector(Person(Bob,1731), " +
"Person(Jill,9274), Person(Jim,8378))"
其中zip产生name-id元组序列,会被传递给map.map方法可以应用函数,也可以应用match子句。
相关文章推荐
- 59.scala编程思想笔记——列表和递归
- php随手记
- 58.scala编程思想笔记——序列
- matlab2013b调用cpp文件,mex,VS2013配置问题
- C语言中,头文件和源文件的关系(转)
- django-simple-captcha 使用 以及添加动态ajax刷新验证
- java读取/写入属性文件
- Java 泛型具体解释
- 用代码判断大小端
- 第4讲C语言程序初体验-练习
- python 编程小实例(2) 四则运算小游戏
- c#与c++交互
- Arrays.asList() 返回的list不能add,remove以及慎用java.util.Collections.copy()方法
- 设计模式学习笔记--装饰者模式(Decorator Pattern)
- Java中父类和子类关于构造方法和私有属性的几个问题
- c#与c++类型对应
- Java正则表达式-语法与示例
- java socket学习笔记
- c/c++常见的排序算法
- 【C++ OpenGL ES 2.0编程笔记】4: 纹理贴图-图片叠加效果实现