我正在将一些旧的Java代码转换为Scala.我有这个.
class XYCustomRenderer(dataMax: Double, dataMin: Double) extends XYShapeRenderer with BaseChart {
override def getItemPaint(series: Int, item: Int): Paint = {
val seriesCollection: TimeSeriesCollection = getPlot.getDataset(OUNCES_CHART).asInstanceOf[ TimeSeriesCollection ]
val ounce = seriesCollection.getYValue(series, item)
if ( ounce >= dataMax || ounce <= dataMin ) {
new Color(255, 161, 15, 200)
}
new Color(242, 29, 5, 150)
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个直接的转换.
我有问题让颜色正确返回.
如果我按照所示编写它,它总是返回底部颜色.
如果我这样写(带回程).
if ( ounce >= dataMax || ounce <= dataMin ) {
return new Color(255, 161, 15, 200)
}
new Color(242, 29, 5, 150)
Run Code Online (Sandbox Code Playgroud)
它总是返回if块中的颜色.这对我没有任何意义.scala表现得某种我不确定的方式.
我只是想根据逻辑返回两种不同的颜色.我究竟做错了什么?
谢谢
if是Scala中的表达式.并隐式返回方法中的最后一个表达式.所以你要么写这个(注意else条款):
if ( ounce >= dataMax || ounce <= dataMin )
new Color(255, 161, 15, 200)
else
new Color(242, 29, 5, 150)
Run Code Online (Sandbox Code Playgroud)
或带有明确return声明的版本.