2011-05-31 66 views

回答

33

定义一个公共的“吸气”到私人的var

scala> class Foo { 
    | private var _bar = 0 
    | 
    | def incBar() { 
    |  _bar += 1 
    | } 
    | 
    | def bar = _bar 
    | } 
defined class Foo 

scala> val foo = new Foo 
foo: Foo = [email protected] 

scala> foo.bar 
res0: Int = 0 

scala> foo.incBar() 

scala> foo.bar 
res2: Int = 1 

scala> foo.bar = 4 
<console>:7: error: value bar_= is not a member of Foo 
     foo.bar = 4 
     ^
+1

谢谢。不幸的是,这是唯一的解决方案:(它很糟糕,因为var真正的名字因为这个而变得很脏,比暴露我的胆量更好。 – 2011-06-02 14:46:37

1

定义的性状与 “吸气剂” 的方法:

性状的Foo { DEF栏:T }

定义延伸此性状的类,并且其具有您的变量

私人类FooImpl(var bar:T)extends Foo

适当限制此类的可见性。

拥有一个专用接口,您还可以在运行时使用多个实现类,以更有效地覆盖特殊情况,延迟加载等。