我是scala的新手,并且有关于覆盖抽象类中变量的以下问题。
abstract class ExampleClass1 {
val testVar = (i: String) => {
i + " A"
}
def exampleMethod1() = {
print testVar
}
}
object ExampleObject1 extends ExampleClass1 {
def getExampleValue() = {
exampleMethod1()
}
}
ExampleClass1和ExampleObject1在一个模块中。我的模块正在调用ExampleObject1.getExampleValue
。我想在ExampleClass1中更改testVar的行为。是否可以在不更改ExampleObjectt1的情况下执行此操作?
谢谢
答案 0 :(得分:0)
如果要在实例化类之后更改值,则应使用var
而不是val
,但如果没有任何进一步的信息,您的设计中似乎存在缺陷。< / p>
如果要在创建对象时设置给定字符串的值,可以使用以下内容:
scala> abstract class ExampleClass1(val i: String)
defined class ExampleClass1
scala> object ExampleObject1 extends ExampleClass1("A")
defined object ExampleObject1
scala> ExampleObject1.i
res1: String = A
或者如果你想使用给定的字符串作为参数:
scala> abstract class ExampleClass2 {
| def test(i: String) = i + " A"
| }
defined class ExampleClass2
scala> object ExampleObject2 extends ExampleClass2
defined object ExampleObject2
scala> ExampleObject2.test("B")
res2: String = B A
你的目标是什么?