将Java转换为Scala代码时的奇怪操作。返回函数中的新对象
我正在将一些旧的Java代码转换为Scala。我有这个将Java转换为Scala代码时的奇怪操作。返回函数中的新对象,scala,Scala,我正在将一些旧的Java代码转换为Scala。我有这个 class XYCustomRenderer(dataMax: Double, dataMin: Double) extends XYShapeRenderer with BaseChart { override def getItemPaint(series: Int, item: Int): Paint = { val seriesCollection: TimeSeriesCollection =
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)
}
}
这几乎是一个直接的转换
我很难让颜色恢复正常
如果我按图所示写,它总是返回底色
如果我这样写的话,还有回报
if ( ounce >= dataMax || ounce <= dataMin ) {
return new Color(255, 161, 15, 200)
}
new Color(242, 29, 5, 150)
它总是返回if块中的颜色。那对我来说毫无意义。scala是否有某种我不确定的行为方式
我只是想根据逻辑返回两种不同的颜色。我做错了什么
谢谢您是否尝试记录或使用调试器查看盎司、数据最大值和数据最小值的实际值 seriesCollection.getYValueseries、item返回的类型是什么 if是Scala中的一个表达式。并且隐式返回方法中的最后一个表达式。因此,您必须将此通知写入else条款:
或者是带有显式返回语句的版本。那么dataMin和Max是正确的。现在的情况是,如果我不在新颜色上加上回报,它就不起作用了。我必须为他们两人报税。我只是想知道为什么会这样?嗯,阿吉尔斯蒂尔的答案对我来说似乎很清楚;-如果你需要更多,告诉我们!如果它总是在If语句中使用return语句返回颜色,那么条件总是true。
if ( ounce >= dataMax || ounce <= dataMin )
new Color(255, 161, 15, 200)
else
new Color(242, 29, 5, 150)