データ型がList
に基づいていくつかの変換を実行する必要があるという要件があります。私はList[String]
いくつかの変換を適用する必要がありますが、List[Int]
を取得する場合、いくつかの異なる変換を適用する必要があると言うことができます。私はList[Any]
をとる関数を定義していましたが、データ型をチェックする必要があります。 isInstanceOf
を使用しようとしましたが、うまくいきませんでした。リスト内のデータ型を見つけよう
List
のデータ型を確認するにはどうすればよいですか。
def test(list: List[Any]): List[Any] = {
if(list.isEmpty) return List()
list.head match {
case a: String => list.map(str => str.asInstanceOf[String]+"3")
case a: Int => list.map(int => int.asInstanceOf[Int]+3)
}
}
それが最善の解決策ではないのですが、私はあなたの何も表示されない:あなたのリストは、すべての要素に同じ型を持っていると平野スカラ座を使用して、あなたがこのような何かを行うことができると仮定すると、
郵便コードスニペットをあなたが試したものを使用することを示すこと。簡単に言えば、シンプルな型テンプレートを使ってやることができます。さらに強力なものが必要な場合は、 'Cats'や' Scalaz'を使ってモナド的に行うこともできます。 – sebszyller
醜いと遅い反射なしではありません。タイプ情報は、[ADT](http://typelevel.org/blog/2014/11/10/why_is_adt_pattern_matching_allowed.html)または[HLists](https://github.com/milessabin)でキャプチャする必要があります。 /shapeless/wiki/Feature-overview:-shapeless-2.0.0#polymorphic-function-values) – Reactormonk