簡體   English   中英

Scala導入類錯誤

[英]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.TokenWorldObject文件中反復添加import org.gui.tokens.Token語句……為什么? 我該怎么辦?

Token是一個對象,因此說def token: Token對編譯器的意義與說def token: 5def 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM