Tuesday, June 1, 2010
Java's hot new syntax for closures
Quick, what does #()(3).() do? OK, I think one can get used to it.
But "support references to ‘this’" sounds really doomed. A closure simply has nothing to do with a "current object". One day, all languages will have methods outside classes, and then the whole "implicit this" charade, both in methods and lambdas, will be clearly viewed as an embarrassing historical accident with huge costs in wasted brainpower. (It's also one of JavaScript's dumbest parts.)
(Also, that they have to make a difference between "statement lambdas" and "expression lambdas" again shows the havoc wreaked by the completely superfluous and annoying distinction between statements and expressions.)
If the context of the closure supports references to "this", then you should also be able to reference "this" inside the closure.
ReplyDeleteWhy? Because the definition of closure implies it. A closure is more than just an anonymous method.
Yeah, but my point is that "this" shouldn't be in the context in the first place.
ReplyDeleteIf the language has an implicit "this", as does Java, then maybe you're right.