それはOption[String]
ScalaのジェネリックtoOptionは期待通りに動作しない
Option[T]
に任意の型を変換する汎用的な関数を記述するために抱き合わせていますが、何とか期待どおりに動作していないここに
scala> def toOption[T](obj:Any):Option[T] = obj match {
| case obj:T => Some(obj)
| case _ => None
| }
<console>:11: warning: abstract type pattern T is unchecked since it is eliminated by erasure
case obj:T => Some(obj)
^
toOption: [T](obj: Any)Option[T]
それはOKらしいです
scala> toOption[String]("abc")
res0: Option[String] = Some(abc)
が、ここではSome(def)
を返す代わりにNone
scala> toOption[Int]("def")
res1: Option[Int] = Some(def)
私はこの一般的な関数を作成する適切な方法を理解することができないし、なぜそれが起こっているのか理解していない、私はすでに多くの投稿を読んでいるとスカラーの型消去についての質問を、具体的な説明は大きな助けになるでしょう!
私はもう少し理解していますが、この 'scala> def toOption [T <:Any](obj:Any)を試してみましょう:Option [T] = obj match { | case obj:String => Some(obj) | case _ => None 'それは働くでしょうか? – superDoss