未找到在共享包的其他文件中创建的类的类型

问题描述 投票:0回答:1

我正在为学校制作一个类似于蛇的小程序,我们被告知为每个班级制作一个单独的代码文件,或者我猜每一个完整的东西,所以到目前为止我有3个班级,其中第三个班级想要使用其他两个类类型作为参数,但我只是找不到:输入“name”。

这是我的三个文件,第一个用于移动坐标,第二个用于选择使用哪些键来移动蛇(我们应该同时有2个不同的键,就像双人游戏一样,所以他们需要不同的控件,通常是 awsd 和箭头)。第三类是蛇或鼹鼠,它本身需要有一个位置,我们在第一类中定义的类型,以及一组移动它的键,第二类。

package blockbattle

case class Pos(x:Int, y:Int):
    def moved(delta: (Int, Int)): Pos = Pos(x + delta(0), y + (delta(1)))
package blockbattle

case class KeyControl(left: String, right: String, up:String, down:String):
    def direction(key:String): (Int, Int) = 
        if key==left then
            (-1,0)
        else if key==right then
            (1,0)
        else if key==up then
            (0, -1)
        else if key==down then
            (0, 1)
        else (0, 0)
package blockbattle

class Mole(val name: String,
var pos: Pos,
var dir: (Int, Int),
val color: java.awt.Color, 
val keyControl: KeyControl
):

我认为我使用的包是错误的,因为如果我只是将其中一个类复制粘贴到同一个文件中,我不会得到类型未找到的信息,但我被告知这应该可行(使用类,而不是这个确切的示例)

问题的屏幕截图,使用 VSCode 和金属: Error message in mole

scala visual-studio-code
1个回答
0
投票

Scala 编译器需要了解所有代码才能正确编译和链接。

您可以将 Scala 文件放在一个目录中。让我们假设

scala-code
。然后只需使用
cd scala-code
进入该目录。

我假设您有另一个名为

Runner.scala
的文件,其中包含您使用这些类的主要方法。它看起来像下面这样,

package blockbattle

object Runner:
  def main(args: Array[String]):
    // some code using your other classes

现在您可以使用编译代码。

scalac *.scala

这将创建另一个名为

blockbattle
的目录,其中包含已编译的 scala 类。

现在您可以使用运行代码,

scala blockbattle.Runner
© www.soinside.com 2019 - 2024. All rights reserved.