2015-05-14 15 views
5

In Python, posso definire due variabili con una matrice in una riga.Come definire più variabili nella singola istruzione

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

come faccio a fare la stessa cosa in Java?

Ho un paio di variabili in classe PCT che tipo è finale. C'è un modo per definirli in una riga in un modo simile a Python? Il seguente formato chiaramente non funziona in Java. Potrei definirli separatamente, ma chiameremo il metodo parseFile due volte che voglio evitare.

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

solo curioso di sapere perché si vuole questo? Al solo scopo di ridurre 2 linee a 1? – noMAD

+1

@noMAD: È una funzione abbastanza comoda nel mondo Python/Octave/Matlab/... per passare/impostare più parametri in una singola istruzione. Manca la famiglia C/C++/Java. –

risposta

4

questo non è possibile, ma è anche non hanno bisogno di chiamare parseFile due volte.

scrivere il codice in questo modo:

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

Python (credo) supporta più valori di ritorno. Java obbedisce alle convenzioni C e quindi non lo consente. Dal momento che non fa parte del linguaggio, la sintassi non è neanche quella, il che significa che sono necessari hack un po 'grossolani come l'array temp se si eseguono più ritorni.

+1

funziona! grazie – Nasreddin

+0

Felice di aiutare! Si prega di contrassegnare questa come risposta se non si hanno domande persistenti. –

2

Se si intende letteralmente la riga ; fino a quando si inserisce una virgola tra due affermazioni, vengono eseguiti come se ci fosse una nuova linea in mezzo in modo da poter chiamare:

a = 1; b = 2; 

È anche possibile comprimere un intero file in un oneliner, rimuovendo commento (che portata alla fine della linea). Spaziatura (spazio, tabulazione, nuova riga, ...) viene in generale rimossa dai file Java (in memoria) come primo passo nel compilatore Java.

Ma probabilmente sei più interessato a una dichiarazione singa. Sytax like [start, stop] = parseFile(file); non è supportato (almeno non per ora). È possibile effettuare un'onliner:

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

Quando dichiarate diverse variabili dello stesso tipo, è possibile effettuare le seguenti operazioni:

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

È possibile definire variabili multiple come questo:

double a,b,c; 

Ogni variabile in uno la linea può anche essere assegnata a un valore specifico:

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

più Un aspetto è, mentre si sta preparando variabile tipo corrente nella stessa linea poi da variabili destra assegnate è possibile assegnare variabile a sinistra, per esempio:

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

notare, è anche possibile praticare operazioni aritmetiche sui variabile rimanendo nella stessa riga.

0

Forse

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; 
    } 
} 
Problemi correlati