Re: refactoring problem
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) = 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
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
class it would even be convenient.
# Ruby (without final though)
FooBar = 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 = name;
}
public(String name, int length, Color color) {
this.name = name;
this.length = length;
this.color = color;
}
public String getName() { return name; }
// ...
@Override
public int hashCode() {...}
@Override
public boolean equals(Object o) {...}
}
Cheers
robert
--
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/