Я хотел бы получить версию встроенной коллекции 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)]
Как я могу изменить класс, чтобы это работало?
map( _._1 )
слышать? Насколько я понимаю, например,set.map(_ + 1)
создаст новый набор с элементами, увеличенными на единицу, но я не могу понять, что делает_._1
- person Nutel   schedule 30.01.2011(_._1)
в этом контексте совпадает с((x: Tuple[T1, T2]) => x._1)
, а_1
— это поле в классеTulple2
, представляющее первый элемент кортежа. - person tenshi   schedule 30.01.2011_X
— это методы для кортежей, которые возвращают x-й компонент. - person Raphael   schedule 30.01.2011