いくつかの条件に基づいてフラグを返す以下の関数があります。複数のオプションでのパターンマッチングの有効な方法Scala
これを達成するための優れたScalaの方法があるかどうかを確認しようとしていますか?
基本的に人の状態に基づいて、pass_indフラグに派生するために最終的に適用されるさまざまなルールがあります。
たぶん、人の状態が学生や失業の場合は所得にいくつかのルールがありますし、人の状態が学生や失業でない場合、スコア&所得に適用される別のルールは
def IncomeScreenStatus(status_cd: Option[String],
score: Option[Int],
income: Option[Double]) : String = {
var pass_ind : String = "F"
if (score.isDefined && income.isDefined && status_cd.isDefined) {
val score : Int = score.get
val income : Double = income.get
val status_cd : String = status_cd.get
if (status_cd == "STUDENT" || status_cd == "UNEMPLOYMENT") {
pass_ind = (status_cd, income) match {
case ("UNEMPLOYMENT", income) if income <= 7000 => "P"
case ("STUDENT", income) if income <= 18000 => "P"
case _ => "F"
}
}
else {
pass_ind = (income, score) match {
case (income, score) if (score < 100 || score > 150) && income <= 8500 => "P"
case (income, score) if (score <= 167 && score >= 100) && income <= 10500 => "P"
case _ => "F"
}
}
}
pass_ind
}
if(score.isDefined && income.isDefined && status_cd.isDefined)の 'else'はどうですか? –
これ以外の場合、pass_indは "F" – shiv455