私はScalaを1年近く使っていますが、今のところ私が実際に理解していないコードを見つけることがあります。今回はこれです。私は、 "一般的なパラメータ型のスカラーメソッド"に関する文書を調べてみましたが、私はまだ混乱しています。一般的なパラメータ型のスカラメソッド
def defaultCall[T](featureName : String) (block : => Option[T])(implicit name: String, list:Seq[String]) : Option[T] =
{
val value = block match {
case Some(n) => n match {
case i : Integer => /*-------Call another method----*/
case s : String => /*--------Call another method----*/
}
case _ => None
}
方法は、以下に示すコードを使用して呼び出されます。
var exValue = Some(10)
val intialization = defaultCall[Integer]("StringName"){exValue}
私は上記のコードでは理解していない何がdefaultCall方式における「ケース」ステートメントです。
exValueに値があり、空でない場合、コードは期待通りに機能します。しかし、私がexValueをNoneに変更した場合、私のコードは "case _ = None"の状態になります。私はここで行われた試合がIntegerかStringのどちらかである "変数"に対して行われているので、なぜこれが起こるのか分かりません。これは「キャッチ」のいくつかのインスタンスではありませんすべて[T]、ここであなたはどれを渡していない場合、第2のケースに一致することをされてはどうなり
は、あなたが '' VARのexValue =一部(10)を意味するものではありません。助け
希望:あなたができる最初の試合で型チェックを達成するために? –
ただ修正しました。それを指摘していただきありがとうございます:) – Goldengirl
最初に 'block'とマッチします。 'block'が' None'ならば、なぜ 'case _ = None'に行きませんか? – Gal