2017-08-01 6 views
0

次のコードでは、最初の式はResult内に "medical"、 "dental"または "pharmacy"のいずれかの文字列を含むResult [String]を返します。私は、文字列を取得するために、valステートメントの最後に.toOption.getを追加することができますが、結果を使用するより良い方法はありますか? .toOption.getがなければ、コードはコンパイルされません。知らずに言うのは難しいスカラ一致式でResult [String]を使用する方法

val service = element("h2").containingAnywhere("claim details").fullText().toOption 
service match { 
    case Some("medical") => extractMedicalClaim 
    case Some("dental") => extractDentalClaim 
    case Some("pharmacy") => extractPharmacyClaim 
    case None => // handle the case where the result was empty 
} 
+2

「Result」クラスはどこで定義されていますか?いくつかのフレームワークの一部ですか?私が知る限り、それは標準的なスカラクラスではなく、ドキュメントがなければ答えにくいです。 –

答えて

0

:その場合は、あなたがそのオプションにtoOptionと試合を呼び出すことができます - 私はこのResult[T]クラスを想定してい

val service = element("h2").containingAnywhere("claim details").fullText() 
    service match { 
     case "medical" => extractMedicalClaim 
     case "dental" => extractDentalClaim 
     case "pharmacy" => extractPharmacyClaim 
    } 
0

Option[T]を返すtoOption方法があります何がResultです。ターゲットがStringのコンストラクタの一部としてcase classの場合は、直接パターンマッチングを行うことができます。

このようなものです。 Resultクラスが抽出(upapply()メソッド)を持っていない場合

service match { 
    case Result("medical") => extractMedicalClaim 
    case Result("dental") => extractDentalClaim 
    case Result("pharmacy") => extractPharmacyClaim 
    case _ => // default result 
} 

あなただけの、この目的のために1を追加することができるかもしれません。

+0

または空でない 'x.toOption.foreach {case" med "=> ??? } '。 –

関連する問題