簡體   English   中英

Scala類型與泛型ArraySeq [T]而不是Array [T]不匹配

[英]Scala type mismatch with generics ArraySeq[T] instead of Array[T]

我有這種方法:

  private def doSomeStringProcessing[T](input: String, typeConverter: String => T): Array[T] = {
   cleanTheString(input)
            .split(",").map(typeConverter)
  }

這給出了錯誤:

error: type mismatch;
[INFO]  found   : scala.collection.mutable.ArraySeq[T]
[INFO]  required: Array[T]

通過一些谷歌搜索,發現帖子說要使用ClassManifest。 試了一下,不推薦使用。 因此,它指向了ClassTag。 在Google上搜索並找到了我要遵循的資源: https : //docs.scala-lang.org/overviews/reflection/typetags-manifests.html#via-the-methods-typetag-classtag-or-weaktypetag

所以我嘗試做以下:

  private def doSomeStringProcessing[T: TypeTag](input: String, typeConverter: String => T): Array[T] = {
   cleanTheString(input)
            .split(",").map(typeConverter)
  }

這給出了完全相同的錯誤。 我想讓泛型使我的代碼更清晰/更易於閱讀,而不是使代碼混亂,所以我不想做任何復雜的解決方案。 解決此問題的最快方法是什么?

這確實適用於ClassTag(我很困惑,因為IntelliJ導入錯誤和/或代碼完成錯誤,所以在下面包括正確的導入):

import scala.reflect.ClassTag

 private def doSomeStringProcessing[T: ClassTag](input: String, typeConverter: String => T): Array[T] = {
   cleanTheString(input)
            .split(",").map(typeConverter)
  }

暫無
暫無

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

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