Actually,
{
//Do some crap
return(yeahBaby);
}
isn't _that_ bad.
On Thu, Jan 15, 2009 at 12:55 AM, Reinier Zwitserloot <[email protected]>wrote:
>
> John:
>
> return is a keyword. Making context sensitive keywords is a major
> change.
>
> Making () optional is an even bigger and more drastic change that's
> going to run into lots of resistance.
>
> But, most importantly:
>
> return foobar;
>
> would become ambiguous. You lose source backwards compatibility.
>
> My personal intuition about the chances of that happening: Between
> Hell freezing over and Tor making it through an entire posse without
> coding.
>
> On Jan 14, 7:19 pm, "John Nilsson" <[email protected]> wrote:
> > On Wed, Jan 14, 2009 at 4:43 PM, Reinier Zwitserloot <[email protected]
> >wrote:
> >
> > > You could graft long returns on
> > > FCM or CICE later, but once you've already used 'return' for the
> > > notion of a local return, then a future long return addition can never
> > > be transparent - you'd have to have a different syntax for returning
> > > out of the containing block, which all by itself is a pretty big
> > > negative mark - that would mean that any attempt to add language
> > > features by way of just writing a utility method are permanently
> > > crippled by the fact that the 'return' syntax is not transparent, and
> > > thus the need to know that something is a library call instead of a
> > > language feature will always be a leaky abstraction.
> >
> > There are probably other ways to implement this. If you could, say, call
> > methods without parenthesis like in Scala, and had a nice way of exposing
> > those methods to the closure you could implement any behavior you want,
> and
> > call it what you want, instead of being restricted to return and friends.
> >
> > Implementing long return in this way is just the matter of throwing an
> > exception and catch it at the right place.
> >
> > Something like
> >
> > abstract class ControlClosure<T>
> > {
> > protected T return(T retval) throws LongReturn<T>{
> > throw new LongReturn<T>(retval);
> > }
> >
> > }
> >
> > abstract class MyForeach<T>
> > {
> > public <RV> void foreach(#ControlClosure<RV>(void(T)LongReturn<RV>)
> > closure);
> >
> > }
> >
> > BR,
> > John
> >
>
--
Viktor Klang
Senior Systems Analyst
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "The
Java Posse" 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/javaposse?hl=en
-~----------~----~----~----~------~----~------~--~---