Scala中的类型不匹配是什么意思,我该如何解决?

时间:2020-01-01 16:14:02

标签: scala

我正在尝试解决这个问题。

在名为“ lecture”的程序包中创建一个名为“ object”的FirstObject 使用名为computeShippingCost的方法“ Double” 将包裹的重量表示为参数,并返回 Double代表包裹的运输费用

•30英镑以上每磅的运费为($)5 + 0.25

•每个重量不超过30磅的包裹都将花费5运费

•一个重31磅的包裹的运费为5.25

•一个重40磅的包裹的运费为7.50

到目前为止,这是我的scala代码:

package lecture

object FirstObject {
  def computeShippingCost(weightOfpackage: Double): Double = {
    val shippingCost = 5
    if (weightOfpackage <= 30){
      return shippingCost
    }
    if (weightOfpackage >30){
      return (shippingCost) + (weightOfpackage - 30) * (.25)
    }

  }

  def main(args: Array[String]): Unit = {
    println(computeShippingCost(25.0)) // expect 5.0
  }
}

我不断收到一条错误消息,说

type: Mismatch, found:Unit, required: Double. 

在问题中这意味着什么,我该如何解决?

1 个答案:

答案 0 :(得分:3)

computeShippingCost中,有一种情况没有得到处理-这将返回Unit。在 Scala 中,每个if都需要有一个else。因此,您的另一种情况是最后一个if不匹配。

因此,您需要处理所有可能的情况。而且每个人都必须返回Double

Scala 中的正确代码如下:

def computeShippingCost(weightOfpackage: Double): Double = {
    val shippingCost = 5
    if (weightOfpackage <= 30){
      shippingCost
    } else {
      shippingCost + (weightOfpackage - 30) * 0.25
    } 
  }

Scala 中不需要return

查看以下说明:Return in Scala