在Scala中是否可以将一些mixin转换为类实例?
例如:我有一些MyClass实例 var x = new MyClass
,我想在某些方法或特征上扩展它而不复制它 .
[Edit:]
我正在寻找在实例化之后扩展 x
的方法 . 因此,例如在函数方法中,它将 x
作为参数 .
[What is behind]
我只是想知道是否有一些神奇的隐式对象和Manifest来实现类型类模式而没有显式调用隐式对象(比如在Haskell中) . 但仅适用于单个物体 .
我知道如果是人为的,但我只是想知道它是否可能因为混合了Scalas功能的大量魔力 .
3 回答
这不可能 . 您可以使用Dynamic trait或Kevin Wright的auto-proxy plugin来查看,但无论如何,您将创建一个新对象,该对象也通过代理来回答原始方法 .
你的意思是:
是的你可以 . 只是重写方法显然可以是:
刚刚遇到这个问题,因为我想知道同样的事情......
所以现在
dave
实例(而不是类Person的所有实例)的行为类似于Person with Dog
,只要隐含在范围内 .这在大多数情况下都有效,除非您的特质具有自我类型 .