val total_breaks = //a random number
total_breaks match {
case i if(i < 0) => chartTemplate.setAttribute("totalBreaks", 0)
case _ => chartTemplate.setAttribute("totalBreaks", total_breaks)
}
Run Code Online (Sandbox Code Playgroud)
我在想Scala中有一个函数可以缩短它.我以为min这样做但我猜不是.我似乎无法找到文件min,max等等.
有点像total_breaks.min(0).如果不在0,则显示0如果不显示total_breaks.
也有办法做这样的事情
(4 + 5) match {
case 0 => println("test")
case _ => println(_) //i need to display the number passed into match? Is this not possible?
}
Run Code Online (Sandbox Code Playgroud)
如果我这样做case i => println(i)是一样的case _ =>?这是后备吗?
有方法min并max在其中定义GenTraversableOnce,因此可用于序列.您可以将它们用作:
scala> List(1, -4, 0).min
resN: -4
Run Code Online (Sandbox Code Playgroud)
也有min和max定义RichInt,就像任何运营商可以转换到工作RichInt,通常是您的香草整数:
scala> -4 min 0
resN: -4
Run Code Online (Sandbox Code Playgroud)
所以,如果你想要的东西,你返回号码,说x如果x大于0和0否则,你可以这样写:
scala> x max 0
Run Code Online (Sandbox Code Playgroud)
这意味着您可以将模式匹配重写为:
chartTemplate.setAttribute("totalBreaks", total_breaks max 0)
Run Code Online (Sandbox Code Playgroud)
关于第二个问题,_而且i都是有效的模式,将匹配任何东西.不同之处在于,在第一种情况下,您不会将与匹配的内容绑定到变量.但是使用println(_)是错误的; 因此,它对应于打印其第一个参数的匿名函数.因此,如果您不想重复表达式(4 + 5),您应该将您的模式和代码编写为:
case i => println(i)
Run Code Online (Sandbox Code Playgroud)