2015-05-14 13 views
5

W Pythonie mogę zdefiniować dwie zmienne z tablicą w jednej linii.Jak zdefiniować wiele zmiennych w pojedynczej instrukcji?

>>>[a,b] = [1,2] 
>>>a 
1 
>>>b 
2 

Jak zrobić to samo w Javie?

Mam kilka zmiennych w klasie PCT, której typ jest ostateczny. Czy istnieje sposób na zdefiniowanie ich w jednej linii w stylu Pythona? Poniższy format wyraźnie nie działa w Javie. Mogłabym je zdefiniować osobno, ale wywoła ona dwukrotnie metodę parseFile, której chcę uniknąć.

public class PCT { 
    final int start; 
    final int stop; 
    public PCT (File file) { 
     //...... 
     //...... 
     // the following statement does not compile 
     [start, stop] = parseFile(file); 
    } 
    public int[] parseFile(File f) { 
     int[] aa = new int[2]; 
     // .... 
     // .... 
     return aa; 
    } 
} 
+0

Tylko ciekaw, dlaczego chcesz to? Wyłącznie w celu zmniejszenia 2 linii do 1? – noMAD

+1

@noMAD: Jest to całkiem wygodna funkcja w świecie Python/Octave/Matlab/... do przekazywania/ustawiania wielu parametrów w pojedynczej instrukcji. Coś, czego brakuje rodzinie C/C++/Java. –

Odpowiedz

4

Nie jest to możliwe, ale nie trzeba również dwukrotnie dzwonić pod numer parseFile.

Wpisz swój kod tak:

int [] temp = parseFile(file); 
start = temp[0]; 
stop = temp[1]; 

Python (wierzę) obsługuje wiele wartości zwracanych. Java przestrzega konwencji C, więc nie pozwala na to. Ponieważ nie jest to część języka, nie ma również składni, co oznacza, że ​​potrzebne są nieznaczne hacki, takie jak tablica temp, jeśli robisz wiele zwrotów.

+1

to działa! dzięki – Nasreddin

+0

Chętnie pomogę! Zaznacz to jako odpowiedź, jeśli nie masz żadnych długotrwałych pytań. –

2

Jeśli literalnie znaczy linia; tak długo, jak umieścić średnik w dwóch sprawozdaniach, są realizowane tak, jakby pojawiła się nowa linia pomiędzy tak można nazwać:

a = 1; b = 2; 

Można nawet skompresować cały plik do oneliner, usuwając komentarz (ten zakres do końca linii). Odstępy (spacja, tabulacja, nowa linia, ...) są ogólnie usuwane z plików Java (w pamięci) jako pierwszy krok w kompilatorze Java.

Ale prawdopodobnie bardziej interesuje Cię singe statement. Sytax jak [start, stop] = parseFile(file); nie jest obsługiwany (przynajmniej na razie). Można dokonać ONLINER:

int[] data = parseFile(file); start = data[0]; stop = data[1]; 
0

Deklarując kilka zmiennych tego samego typu, można wykonać następujące czynności:

int a = 1, b = 2, c = 3; //etc. 
4

Można zdefiniować wiele zmiennych tak:

double a,b,c; 

każda zmienna w jednym Linia może również zostać przypisana do określonej wartości:

double a=3, b=5.2, c=3.5/3.5; 

Jeszcze jeden aspekt, podczas gdy przygotowują wspólny typ zmiennej w jednej linii, a następnie od prawej przypisanych zmiennych można przypisać zmienną na lewo, na przykład:

int a = 4, b = a+1, c=b*b; 

Zauważyłem, można również ćwiczyć operacje arytmetyczne na zmienna, pozostając w tym samym wierszu.

0

Może

public class PCT 
{ 
    final Point pos; // two ints! 

    public PCT (File file) 
    { 
     pos = parseFile(file); 
    } 

    public int[] parseFile(File f) 
    { 
     Point aa = new Point(); 
     // .... 
     // .... 
     return aa; 
    } 
} 
Powiązane problemy