簡體   English   中英

類型與Option中的存在類型不匹配

[英]Type mismatch with existential types inside Option

我正在嘗試將一堆類傳遞給SparkConf.registerKryoClasses方法,該方法具有以下簽名:

registerKryoClasses: Array[Class[_]]) => SparkConf

由於可能需要注冊的類可能存在或不存在,因此我將其包裝在Option並嘗試了此操作(簡化版本):

class SomeClass(val app: String, val classes: Option[Array[Class[_]]]) {
  val conf = classes match {
    case Some(cs) ⇒ new SparkConf()
      .setAppName(app)
      .registerKryoClasses(cs)
    case None ⇒ new SparkConf()
      .setAppName(app)
  }
  // more stuff
}

IntelliJ給我的提示是, cs上存在類型不匹配,然后列出了預期的類型和實際的類型。 他們是一樣的。

我在這里想念什么?

以下對我來說很好用,

def someClass(app: String, classes: Option[Array[Class[Any]]]): SparkConf = {
  val conf = classes match {
    case Some(cs) ⇒ new SparkConf()
      .setAppName(app)
      .registerKryoClasses(cs)
    case None ⇒ new SparkConf()
      .setAppName(app)
    // more stuff
  }

  conf
}

val conf = someClass("lol", Some(Array(classOf[String], classOf[Int])))
//org.apache.spark.SparkConf = org.apache.spark.SparkConf@685d92cf

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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