2016-10-07 2 views
-1

あなたがpythonで知っているように、関数は複数の値Javaメソッドが複数の値を返すことができない理由は何ですか?

例えば返すことができます。

def myfun(): 
    return 1, 2, 3 

をそして、我々はこの方法でそれを呼び出すことができます。

a, b, c= myfun() 

しかし、JAVAで、我々 1つ以上の値を返すことができないため、返す値を含む1つのオブジェクトを作成する必要があります。

class MyObject { 

    private Integer a; 
    private Integer b; 
    private Integer c; 

    public Integer getA() { 
     return a; 
    } 
    public void setA(Integer a) { 
     this.a = a; 
    } 
    public Integer getB() { 
     return b; 
    } 
    public void setB(Integer b) { 
     this.b = b; 
    } 
    public Integer getC() { 
     return c; 
    } 
    public void setC(Integer c) { 
     this.c = c; 
    } 
} 

と私たちの関数は、このオブジェクトを返します

例:

public MyObject myfun(){ 
    MyObject myObject = new MyObject(); 
    myObject.setA(1); 
    myObject.setB(2); 
    myObject.setC(3); 
    return myObject; 
} 

そして、我々はこの方法でそれを呼び出す:

obj = myfun(); 
Integer a = obj.getA(); 
Integer b = obj.getB(); 
Integer c = obj.getC(); 

別の解決策は、そのすべての値を含む配列を返すことです

しかしどちらの方法もコーディングには醜いですが、JAVAでは制限がありますので、メソッドが返すことはできません複数の値?

+1

'java'はOOP言語であるため、これらの値がすべて接続されている場合は' class'を作成するのに十分な意味があります。私はそこに '醜い'部分を見ていない。 – SomeJavaGuy

+3

JavaはPythonではありません。はい、制限があります。 – duffymo

+0

Javaは意図的にCのように設計されています.Cではこれが動作します。 –

答えて

10

厳密に言えば、Pythonは2つ以上の値を返しません。 1, 2, 3はタプルです。 Pythonの構文が自動的にそのタプルを別々の変数に展開することをサポートしているだけです。

8

Python関数は1つの値を返すだけです。

>>> def myfun(): 
...  return 1, 2, 3 
... 
>>> a = myfun() 
>>> type(a) 
<class 'tuple'> 

ご覧のとおり、これはJavaの場合と同様にコンテナです。

関連する問題