【发布时间】:2011-01-29 21:30:25
【问题描述】:
我想派生一个 Scala 内置集合的版本,它扩展了特定泛型类型的功能,例如,
import scala.collection.immutable._
class Tuple2Set[T1,T2] extends HashSet[Tuple2[T1,T2]] {
def left = map ( _._1 )
def right = map ( _._2 )
}
但是当我尝试将它与以下测试一起使用时
new Tuple2Set[String,String]() + (("x","y")) left
我得到以下编译错误
error: value left is not a member of scala.collection.immutable.HashSet[(String, String)]
如何更改课程以使其正常工作?
【问题讨论】:
-
我是 Scala 新手,谁能解释一下
map( _._1 )的意思是什么?据我了解,例如set.map(_ + 1)将创建新的集合,其中元素递增一,但我无法得到_._1所做的事情 -
@Vetal: @Vetal:
(_._1)在此上下文中与((x: Tuple[T1, T2]) => x._1)相同,_1是Tulple2类中的字段,表示元组的第一个元素。 -
@Easy 谢谢,如果可以的话,我会接受你的回答
-
Vetal,
_X是返回第 x 个组件的元组上的方法。