Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
访问(/导入)Scala枚举_Scala_Enumeration - Fatal编程技术网

访问(/导入)Scala枚举

访问(/导入)Scala枚举,scala,enumeration,Scala,Enumeration,对于以下HwLogger.PersisterType枚举: object HwLogger extends Serializable { object PersisterType extends Enumeration { type Persisters = Value val FilePersister, HdfsPersister, SocketPersister = Value } } 在同伴类中-我们如何访问它?请注意下面大量的导入 class HwLog

对于以下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 
  }

}
在接受答案(以及arraybuffer append运算符上的语法更正)后更新,以下是更正的代码:

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
  }

}

枚举中的元素类型是
Persisters
,而不是
PersisterType
PersisterType
只是一个值。要使用
枚举
,确实需要导入
PersisterType
中的类型和值

class HwLogger extends Serializable {
  import collection.mutable.ArrayBuffer
  import HwLogger.PersisterType._
  val persisterTypes = ArrayBuffer[Persisters]()
  def setDefaults: Unit = {
    persisterTypes += FilePersister += HdfsPersister 
  }
}

翼潜艇?翅膀是如何在水下运动的?我看了你的代码和你的评论。请注意,OP中已经包含了以下导入:导入HwLogger.PersisterType.\uu那么您建议的新逻辑是什么?
ArrayBuffer[Persisters]
是您需要的关键更改。至于名字,我只是喜欢它所唤起的意象:)哦,就在你上一篇文章发表前不久,我看到了它。谢谢你的眼睛。如果我有翅膀,我会紧贴天空,避免水的阻力。最后,最好的解决办法是将“类型”更改为与对象名称相同。我本不想让他们分道扬镳,但事情就这样发生了。