in reply to Re: May Thy Closures Be Blessed
in thread May Thy Closures Be Blessed
An interesting discussion would be the differences between this and Inside-out classes. Both are based on lexical scoping to enforce encapsulation. What are the benefits/drawbacks of either method?
Off the top of my head:
- You don't have to mess around with DESTROY with the closure based method, which makes maintenance easier.
- Inside out objects are more space efficient than closures.
- Accessing object state is a subroutine call with closure objects, and a hash access with inside-out objects. The latter will be a fair bit faster.
- You can subclass an existing non-inside-out object and add inside-out based state to the objects in the subclass. You can't do this with without delegation with closures.
- You need a bit more mechanism than the proposal hardburn showed above to get separate namespaces for state in different subclasses. This comes for free with inside-out.
- You don't get compile-time checking of your instance variable naming with closures.
- added 16:58 GMT+1:Inside out instance variables are scoped to the class they are declared in. With the mechanism outlined in the OP instance variables can also be accessed in subclasses.