環境
私はこのようなリストを持っています:
List[(User)]
そして、次のようなリストが必要です:
List[(String, String)]
ユーザーが次のように定義されている場合:
case class User(
id:Pk[Long] = NotAssigned,
name: String
)
実際には、最初のリストは classes から構築されます:
試した:
私の最初の「素朴な」試み(Javaからのもの)は次のとおりでした:
myList.map { u => u.id.get.toString, u.name }
そして、私はエラーを持っています:
required List[(String, String)]
given List[(java.lang.String, String)]
解決
コメントで参照されている投稿で述べたように、Scala には拡張 java.lang.String である String 型があります。推論を使用する場合、Scala は Scala スーパー クラスに変換されません。Scala の String 型を使用するには、戻り値の型を明示的に定義する必要があります。
例:
// Returns List[(java.lang.String, String)]
myList.map { u => u.id.get.toString, u.name }
// Returns List[(String, String)]
def convert(m:List[User]):List[(String, String)] = {
m.map { u => u.id.get.toString, u.name }
}