2
對於以下HwLogger.PersisterType枚舉:訪問(/進口)斯卡拉枚舉
object HwLogger extends Serializable {
object PersisterType extends Enumeration {
type Persisters = Value
val FilePersister, HdfsPersister, SocketPersister = Value
}
}
在同伴類 - 我們如何訪問呢?請注意以下進口擺..
class HwLogger extends Serializable {
import collection.mutable.ArrayBuffer
import HwLogger.PersisterType._
import HwLogger.PersisterType
var persisterTypes = ArrayBuffer[PersisterType]() // Compiler says " error: not found: type PersisterType"
def setDefaults : Unit = {
import PersisterType._
persisterTypes ++ FilePersister ++ HdfsPersister
}
}
UPDATE接受的答案後(在arraybuffer和語法修正追加運營商)這裏是更正後的代碼:
object HwLogger extends Serializable {
object PersisterType extends Enumeration {
type Persisters = Value
val FilePersister, HdfsPersister, SocketPersister = Value
}
}
class HwLogger extends Serializable {
import collection.mutable.ArrayBuffer
import HwLogger.PersisterType._
import HwLogger.PersisterType
var persisterTypes = ArrayBuffer[Persisters]() // This is the fix (Persisters instead of PersisterType)
def setDefaults : Unit = {
import PersisterType._
persisterTypes :+ FilePersister :+ HdfsPersister
}
}
**另一個更新* *
改變枚舉對象將避免麻煩:
object HwLogger extends Serializable {
object PersisterType extends Enumeration {
type PersisterType = Value // Changed the "type" to be same as object name
val FilePersister, HdfsPersister, SocketPersister = Value
}
}
class HwLogger extends Serializable {
import collection.mutable.ArrayBuffer
import HwLogger.PersisterType._
import HwLogger.PersisterType
var persisterTypes = ArrayBuffer[PersisterType]() // Revert back to PersisterType
def setDefaults : Unit = {
import PersisterType._
persisterTypes :+ FilePersister :+ HdfsPersister
}
}
wingedsubmariner?翅膀如何在水下運動? – javadba
我看着你的代碼和你的評論。請注意OP中已經包含以下導入:import HwLogger.PersisterType._那麼您建議的新邏輯是什麼? – javadba
'ArrayBuffer [Persisters]'是您需要的關鍵變化。至於名稱,我只是喜歡它喚起的圖像:) – wingedsubmariner