Ok, I see now.
I don't think I've ever written something like that... I normally just
implement a trait in anonymous classes -- I don't usually extend it. It's
interesting to see that structural types "leak" so easily.
thanks!
alex
On Tue, Dec 2, 2008 at 10:51 AM, Jorge Ortiz <[EMAIL PROTECTED]> wrote:
> class Foo
>
> // type is singleton type Bar.type
> object Bar extends Foo {
> def exc = (new Exception).printStackTrace
> }
>
> // type is structural type Foo{def exc: Unit}
> val Baz = new Foo {
> def exc = (new Exception).printStackTrace
> }
>
> // compare:
> Bar.exc
> Baz.exc
>
> Singleton types get their own .class file. Structural types use reflection.
>
> --j
>
>
> On Tue, Dec 2, 2008 at 12:33 PM, Alex Boisvert <[EMAIL PROTECTED]>wrote:
>
>> On Tue, Dec 2, 2008 at 10:24 AM, Jorge Ortiz <[EMAIL PROTECTED]>wrote:
>>
>>> If you add (non-overriden) fields to a val, they'll always be invoked via
>>> reflection, which takes a performance hit. Objects, on the other hand,
>>> define their own class so reflection isn't necessary.
>>
>>
>> Can you give an example? I can't picture this from your description.
>>
>> alex
>>
>>
>>
>>
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Lift" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/liftweb?hl=en
-~----------~----~----~----~------~----~------~--~---