我有一个点和一个类,通过一些额外的行为来扩展这一点:
Point(x: Int, y: Int)
WeightedPoint(value: Double) extends Point
WeightedPoint
使用与Point
相同的哈希和等于方法。
我可以像Point -> WeightedPoint
一样制作一个自己的点的地图,并使其自动执行p = WeightedPoint(1,2,324.0); map.put(p,p)
。之后我可以执行map.get(Point(1,2))
并获取WeightedPoint(1,2,324.0)
我无法制作Point -> Double
地图,因为WeightedPoint
需要访问其x
和y
坐标以及它的价值。
这种关系有名字吗?是否存在直接执行此操作的数据结构或模式?