我们在scala中遇到了一个问题,即定义一个以线段作为参数并返回其中点(其坐标为端点坐标平均值的点)的过程。我尝试编译程序,它给我两个错误,即我的midpointSegment方法中的类型不匹配错误。我不明白为什么它需要一个字符串。谁能指出我的错误?以下是我的代码。
class Point(x: Int, y: Int) {
def xCoord = x
def yCoord = y
def makeString(m: Point) = "Point" + "(" + x + "," + y + ")"
}
class LineSegment(x: Point, y: Point) {
def startSeg = x
def endSeg = y
def midpointSegment(m: LineSegment) = ((startSeg + m.startSeg) / 2,
(endSeg + m.endSeg) / 2)
def makeString(m: LineSegment) =
"LineSegment" + "(" + x.makeString(x) + "," + y.makeString(y) + ")"
}
object Mp5 {
def main(args: Array[String]): Unit = {
val aLine1 = new Point(1, 2)
val aLine2 = new Point(5, 4)
val aLineSegment1 = new LineSegment(aLine1, aLine2)
val aLineSegment2 = new LineSegment(new Point(-3, 5), new Point(8, -1))
println(aLine1.makeString(aLine1))
println(aLine2.makeString(aLine2))
println(aLineSegment1.makeString(aLineSegment1))
println(aLineSegment2.makeString(aLineSegment2))
println(aLineSegment1.midpointSegment(aLineSegment2))
}
}
答案 0 :(得分:2)
您尝试添加两个点,因为startSeg
和m.startSeg
是积分。您尚未定义如何执行此操作,因此编译器似乎认为您正在添加字符串(因为任何内容都可以添加到字符串中,如toString
的定义)。说实话,如果这是整个代码,我不会指望这个错误,而是关于缺少+
方法的东西。
供将来参考:1。提供实际的错误信息和堆栈跟踪; 2.您不需要在Scala中定义def xCoord = x
之类的方法,只需在类参数中编写val x
而不是简单x
; 3.阅读案例类。