So the short answer is, if you want to use Field as a structural type and
override functions on that type, you're better off defining a new Field
subtype or a trait with the appropriate behavior than doing it inline as an
anonymous class, if you want to avoid the performance hit.

I'm okay with that. Seems like it would make that behavior more easily
reusable in any case.

Kris

On Tue, Dec 2, 2008 at 12:01 PM, Jorge Ortiz <[EMAIL PROTECTED]> wrote:

> I guess that's a bit misleading. new Foo { ... } gets it's own .class file
> too, but at the level of types, it doesn't get it's own type, hence the need
> for reflection.
>
>
> On Tue, Dec 2, 2008 at 12:51 PM, 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 liftweb@googlegroups.com
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to