API应该提供Rect :: contains(Point)还是Point :: is_inside(Rect)或两者?或Math :: contains(Point,Rect)导致它是对称的?
相同的Q适用于LineSegment :: contains(Point),Rect :: fully_contains(Circle)等.
Rect::contains(Point)
因为它是一个积木,所以最有意义.另一个并不是必需的,因为您希望每个特定的形状都能实现操作,而Point
不必知道每个可能的形状.同样的答案也适用LineSegment
.
关于它之间的关系,使用大多数面向对象的框架并且没有任何确定的答案Circle
,Rect
它更棘手.像CLOS这样的其他一些面向对象的方式通过使用泛型函数和方法来实现它,使其成为一个非问题.