我刚看到我能做到:
Set(1, 2, 3).map(Set(1))
Run Code Online (Sandbox Code Playgroud)
产生结果:
Set(true, false)
Run Code Online (Sandbox Code Playgroud)
但我认为map函数只能采用另一个函数而不是新的Set.如果有什么我希望这会返回一组集合.发生了什么,结果意味着什么?
Jör*_*tag 20
但我认为该
map功能只能采取另一种新功能Set.
A Set 是一个功能.它是一个从它的元素到布尔值的函数:当你传递一个元素时,它告诉你该元素是否是它的一部分Set.
Set(1, 2, 3).map(Set(1))
Run Code Online (Sandbox Code Playgroud)
迭代Set(1, 2, 3),将每个元素传递给Set(1).即,其第一次询问"是1组的成员{1}",这是true,则它要求同样的问题2和3,这是false.
所以,结果是Set(true, false, false),当然这只是Set(true, false).
类似地,序列是从整数到元素的函数,映射是从键到值的函数.
Set也是功能 - 它延伸Function1.请参阅Scaladoc中的Inherited部分:
http://www.scala-lang.org/api/current/scala/collection/immutable/Set.html
Set[A]延伸Function1[A, Boolean]. Map[K, V]延伸
PartialFunction[K, V],反过来延伸Function1[K, V].Seq[A]延伸PartialFunction[Int, A],反过来延伸
Function1[Int, A].因此,在Scala集合库中,集合,序列和映射本身就是函数.
applySet[_]测试方法设置成员资格.applymethod in Map[_, _]
返回与给定键关联的值.如果密钥不存在则引发错误.apply方法in Seq[_]返回给定索引处的元素.引发无效索引的错误.以下两个是等效的:
Set(1, 2, 3).map(Set(1))
Set(1, 2, 3).map(x => Set(1).contains(x))
Run Code Online (Sandbox Code Playgroud)
以下两个是:
Seq(1, 2, 3).collect(someMap)
Seq(1, 2, 3) collect {
case x if someMap contains x => someMap(x)
}
Run Code Online (Sandbox Code Playgroud)
还有以下两个:
Seq(1, 2, 3).map(someSeq)
Seq(1, 2, 3).map(x => someSeq(x))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5261 次 |
| 最近记录: |