将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 =

我正在将一些旧的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)

    }
}
这几乎是一个直接的转换

我很难让颜色恢复正常

如果我按图所示写,它总是返回底色

如果我这样写的话,还有回报

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)