def main(args: Array[String]) {
println(dateExtract("2020-05-15","yyyy-MM-dd","moo"))
}
def dateExtract(date: String, ipFormat: String, field: String): String ={
var dateformat = ipFormat;
val dtf = java.time.format.DateTimeFormatter.ofPattern(dateformat)
val dateString = date;
val d = java.time.LocalDate.parse(dateString, dtf)
var yea1="";
var mon1="";
field match {
case years => val yea = d.getYear
yea1=yea.toString
case moo => val mth = d.getMonth
mon1=mth.toString
}
mon1
}
在这段代码中,我向函数dateExtract传递了3个参数。 在函数dateExtract中,我使用case语句的第三个参数, 但它显示了像这样的警告
`Solution.scala:20: warning: patterns after a variable pattern cannot match (SLS 8.1.1)
case years => val yea = d.getYear
^
Solution.scala:22: warning: unreachable code due to variable pattern 'years' on line 20
case moo => val mth = d.getMonth
^
Solution.scala:22: warning: unreachable code
case moo => val mth = d.getMonth
^
three warnings found`
给我一个解决方案
答案 0 :(得分:0)
如果我理解正确,您希望匹配Strings
"years"
和"moo"
,然后根据传递的函数参数返回Year
或Month
值。如果是这种情况,那么在您的模式匹配中,您不匹配String
值,则匹配显示警告的某个变量year
。另请不要使用var
尝试使用val
。请尝试以下代码,
def dateExtract(date: String, ipFormat: String, field: String): String = {
val dtf = java.time.format.DateTimeFormatter.ofPattern(ipFormat)
val d = java.time.LocalDate.parse(date, dtf)
field match {
case "years" => d.getYear.toString
case "moo" => d.getMonth.toString
//uncomment it if you want to include default case
//case _ => what you want to do in case your String doesn't matches any of the above cases.
}
}