私はスカラの初心者です。私は、この式は出力として)私は(を取得するには、オブジェクトのメンバ関数にアクセスしようとする一方でオブジェクトは抽象クラスをスカラで拡張できますか?
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
ありがとうございました!
''抽象クラスF {def f = 42} '' 、次に: '(新しいF { })f 'returning:' res0:Int = 42' ' –
この場合、戻り値の型は実装から推測されます。抽象クラスがデフォルトの実装や戻り値の型を提供しない場合、それは '' Unit''関数とみなされます。 –
ありがとう - '抽象クラスG {def g}'。次に、 'class GImpl extends G {override def g:Int = 42}'はコンパイルに失敗します: 'error:type => Unit;'クラスGのメソッドgをオーバーライドします。任意のコンパイラフラグまたは、私はそのようなメソッドで戻り値の型を必要とするスカラーチケットを推測していますか? –