[英]Scala import class error
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
}
}
第二個:
package org.gui.tokens
object Token {
}
問題是def token: Token
的返回類型def token: Token
用紅色下划線def token: Token
有錯誤提示
找不到:類型令牌
上課地點一切都很好。 其他類沒有類似的問題。 我不記得Java中的這種情況,自動導入始終運行完美。 在這里,它僅import org.gui.tokens.Token
在WorldObject
文件中反復添加import org.gui.tokens.Token
語句……為什么? 我該怎么辦?
Token
是一個對象,因此說def token: Token
對編譯器的意義與說def token: 5
或def token: "Hello"
。
如果要返回Token
對象,則意味着def token = Token
。 或者您的意思是class Token {}; object Token extends Token {}
class Token {}; object Token extends Token {}
在您的tokens文件中class Token {}; object Token extends Token {}
,因此確實存在一個名為Token
的類,或者您的意思是def token: Token.type
,這意味着該方法必須返回對象 Token
類型的某種東西。 (但是沒有什么意義,因為對象Token
是唯一具有Token.type
類型的Token.type
。)
首先,“紅色下划線”表示您正在詢問有關Scala的特定IDE(Eclipse,IDEA?)。
object Token
是一個單例對象,沒有可以實例化的通用Token
類型! 確實有一個對象,所以def token: Token
錯誤地暗示可能存在不同的令牌。 您可以通過兩種方式糾正此問題。 首先通過使用Token
的單例類型:
def token: Token.type
或者,由於只有一種方法可以返回此類對象,因此您可以提供實現:
def token: Token.type = Token
或短
def token = Token
但是,這種方法的實用性值得懷疑。 任何尋找對象Token
都可以直接與之對話,而不是間接的方法。
您的問題不是包,而是對象。
您將標記標記為對象而不是類。 這類似於將Java類中的每個方法都標記為靜態,但是在Scala中,沒有機會進行聲明。
package org.gui.tokens
class Token {
}
請記住,因為對象只有一個實例並且不能擴展,所以它們不能用作標識符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.