Path: csiph.com!newsfeed.hal-mli.net!feeder3.hal-mli.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!feeder.erje.net!us.feeder.erje.net!newsfeed.straub-nv.de!news-1.dfn.de!news.dfn.de!news.informatik.hu-berlin.de!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Robert Klemme Newsgroups: comp.lang.java.programmer Subject: Re: refactoring problem Date: Sun, 03 Feb 2013 21:38:27 +0100 Lines: 87 Message-ID: References: <7fssg8dakvofmv6pk3sfvp5jmaku55vgmm@4ax.com> <510ea8de$0$284$14726298@news.sunsite.dk> <510ead27$0$291$14726298@news.sunsite.dk> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: quoted-printable X-Trace: individual.net v8IfXiWynPyS8rEEE4sPzgBRXoq734XRxYdvhuku+5TB6lxuAtVnE2Ki97/+osQfQ= Cancel-Lock: sha1:J8lPi+oDtq+2kFzUKHxjsqABgrM= User-Agent: Mozilla/5.0 (Windows NT 6.0; WOW64; rv:17.0) Gecko/20130107 Thunderbird/17.0.2 In-Reply-To: Xref: csiph.com comp.lang.java.programmer:22057 On 03.02.2013 19:50, Peter Duniho wrote: > On Sun, 03 Feb 2013 13:32:08 -0500, Arne Vajh=F8j wrote: > >> [...] >>>> (int a; double b; String c) =3D multiReturnValueMethod(); >>>> >>>> sure does look funky! >>> >>> Perl does it. >> >> How do I phrase this to avoid a language war. >> >> Hm. >> >> Perl is not designed to make it difficult to write funky code. Well put, Arne! ;-) > On the other hand, F# is designed that way and it supports tuple return= > values as well. > > I doubt we'll ever see the feature in C-based languages like Java and C= #, > but there are other languages that support it, and in at least some of > those examples, they do it gracefully. If you want a language that does it gracefully and runs on the JVM you=20 can pick JRuby. > That said, it seems perfectly fine to me in Java to declare a container= > type to allow multiple values to be returned. It's a common enough idio= m > and works well. Absolutely! And if it was as easy as in (J)Ruby to declare a simple data container=20 class it would even be convenient. # Ruby (without final though) FooBar =3D Struct.new :name, :length, :color // Java public struct FooBar { final String name; int length; Color color; } could generate public class FooBar { private final String name; private int length; private Color color; public(String name) { this.name =3D name; } public(String name, int length, Color color) { this.name =3D name; this.length =3D length; this.color =3D color; } public String getName() { return name; } // ... @Override public int hashCode() {...} @Override public boolean equals(Object o) {...} } Cheers robert --=20 remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/