Class Scala导入类错误

Class Scala导入类错误,class,scala,import,Class,Scala,Import,Scala导入有问题。我有两个类的导入问题。第一个: package org.world import org.gui.tokens.Token object WorldObject { } abstract class WorldObject[A <: WorldObject[_]](var xPos: Float, var yPos: Float) { def x = xPos def y = yPos def token: Token

Scala导入有问题。我有两个类的导入问题。第一个:

package org.world
import org.gui.tokens.Token


object WorldObject {

}

abstract class WorldObject[A <: WorldObject[_]](var xPos: Float, var yPos: Float) {
  def x = xPos
  def y = yPos

  def token: Token
             ^^^^^
  def move(dx: Float, dy: Float) {// : A = new A(x + dx, y + dy)
    xPos += dx // = x + dx
    yPos += dy
  }
}
问题是
def-token:token
的返回类型以红色下划线,并显示错误

找不到:类型标记


上课地点都可以。其他类没有类似的问题。我不记得在Java中出现过这种情况,autoimport总是工作得很好。这里它只在
WorldObject
文件中反复添加
import org.gui.tokens.Token
语句。。。为什么呢?我能做些什么呢?

令牌
是一个对象,所以说
def-Token:Token
对编译器来说就像说
def-Token:5
def-Token:“Hello”
一样有意义


如果要返回
标记
对象,您的意思是
def token=token
;或者你的意思是
类标记{};对象令牌扩展了令牌文件中的令牌{}
,因此确实有一个名为
Token
的类,或者您的意思是
def-Token:Token.type
,这意味着该方法必须返回对象
令牌
类型的内容。(但是没有太多的意义,因为对象
标记
是唯一具有类型
标记的东西。类型

标记
是一个对象,所以说
def-Token:Token
对编译器来说就像说
def-Token:5
def-Token:“Hello”
一样有意义


如果要返回
标记
对象,您的意思是
def token=token
;或者你的意思是
类标记{};对象令牌扩展了令牌文件中的令牌{}
,因此确实有一个名为
Token
的类,或者您的意思是
def-Token:Token.type
,这意味着该方法必须返回对象
令牌
类型的内容。(但是没有太多的意义,因为对象
标记
是唯一具有类型
标记的东西。类型

首先,“红色下划线”表示您正在询问Scala的特定IDE(Eclipse,IDEA?)

objecttoken
是一个单例对象,没有可以实例化的通用类型
Token
!只有一个对象,因此
def-token:token
错误地表示可能存在不同的标记。您可以通过两种方式纠正此问题。首先,使用单例类型的
标记

def token: Token.type
或者,由于只有一种方法可以返回此类对象,因此您可以提供以下实现:

def token: Token.type = Token
或短

def token = Token

然而,这种方法的有用性值得怀疑。任何寻找对象
标记的人都可以直接与它对话,而不是间接使用方法。

首先,“红色下划线”表示您正在询问Scala的特定IDE(Eclipse,IDEA?)

objecttoken
是一个单例对象,没有可以实例化的通用类型
Token
!只有一个对象,因此
def-token:token
错误地表示可能存在不同的标记。您可以通过两种方式纠正此问题。首先,使用单例类型的
标记

def token: Token.type
或者,由于只有一种方法可以返回此类对象,因此您可以提供以下实现:

def token: Token.type = Token
或短

def token = Token

然而,这种方法的有用性值得怀疑。任何寻找对象
标记的人都可以直接与它对话,而不是间接的方法。

您的问题不在于包,而在于对象

您将令牌标记为对象而不是类。这类似于将Java类中的每个方法标记为static,但在Scala中,没有声明的机会

    package org.gui.tokens
    class Token {
    }

请记住,因为对象只有一个实例并且不能扩展,所以它们不能用作标识符。

您的问题不在于包,而在于对象

您将令牌标记为对象而不是类。这类似于将Java类中的每个方法标记为static,但在Scala中,没有声明的机会

    package org.gui.tokens
    class Token {
    }

请记住,因为对象只有一个实例并且不能扩展,所以它们不能用作标识符。

是的,您是对的,这是Eclipse。。。多亏了你的回答,我明白我的错误是我没有创建类
标记
。。。感谢您的回答,我明白我的错误是我没有创建类
令牌
。现在,当我理解这个问题时,我相信Scala IDE中的自动导入必须对此做出某种反应,而不仅仅是默默地导入对象而不是类。现在当我理解这个问题时,我相信Scala IDE中的自动导入必须以某种方式对此做出反应,而不仅仅是默默地导入对象而不是类。