我正在尝试解决这个问题。
在名为“ 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.
在问题中这意味着什么,我该如何解决?
答案 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