【发布时间】:2015-09-02 12:47:19
【问题描述】:
这是我的代码:
val regexMeter = """^\s*(\d+,*\d+)\s*[m]\s*$""".r
val regexCentimeter = """^\s*(\d+,*\d+)\s*cm\s*$""".r
val regexDecimeter = """^\s*(\d+,*\d+)\s*dm\s*$""".r
val regexMillimeter = """^\s*(\d+,*\d+)\s*mm\s*$""".r
val height = scala.io.StdIn.readLine("Please insert the height of your shape:")
height match {
case regexMeter(value) => val newValue = value.toDouble*100
case regexCentimeter(value) => val newValue = value.toDouble
case regexDecimeter(value) => val newValue = value.toDouble*10
case regexMillimeter(value) => val newValue = value.toDouble/10
case _ => throw new IllegalArgumentException
}
所以事情是我的输入例如:“21m”,它只获取 21,如果它的正则表达式与米匹配,则将其分配给 val newValue 并用它做一些事情。
但是当我现在想打印该值newValue 时,它说它找不到该值?
如何从这个匹配案例中返回这个 val?
【问题讨论】:
-
只要去掉赋值部分
val newValue =,模式匹配的结果就是返回值(如果你的函数后面没有的话)。 -
好的,我也会尝试该解决方案,谢谢!编辑:它不起作用!直到从输入行中取值...
标签: scala scope pattern-matching return-value