我是斯卡拉的新手。我正在尝试创建一个扩展抽象类的Object,如下面的show
object Conversions extends UnitConversions
{
override def inchesToCentimeters(inches:Int) = inches * 2.5
override def gallonsToLiters(gallons:Int) = gallons * 3.78
override def milesToKilometers(miles:Int) = miles * 1.6
}
abstract class UnitConversions
{
def inchesToCentimeters(inches:Int)
def gallonsToLiters(gallons:Int)
def milesToKilometers(miles:Int)
}
当我尝试访问对象的成员函数时,我将()此表达式作为输出。
Conversions.milesToKilometers(20) //I get output ()
以下声明更多是有效的???
var ucv:UnitConversions = new Conversions
println(ucv.milesToKilometers(3)) // I get output () here as well
提前致谢!
答案 0 :(得分:8)
您需要为函数提供返回类型,否则返回Unit
:
abstract class UnitConversions {
def inchesToCentimeters(inches:Int): Double
def gallonsToLiters(gallons:Int): Double
def milesToKilometers(miles:Int): Double
}`
答案 1 :(得分:0)
关于这个问题:
以下声明更多是有效的???
void read(fraction& x); void reduce(fraction& x);
这不会编译。 var ucv:UnitConversions = new Conversions println(ucv.milesToKilometers(3))
基本上意味着单身,可以用于"静态"方法。创建单个实例的多个实例是没有意义的。看看这个问题:Difference between object and class in scala