Newsgroup: it.comp.java
Titolo: Creare nomi di variabili

Ciao,
sono dentro un ciclo e devo creare dei nomi delle variabili secondo un
pattern definito.
Esempio:
for (int i = 0; i < SOMERANDVALUE; i++) {
int j01 = i;
}
il j01 dipende dal valore di i+1, ad esempio.
Mi servirebbe qualcosa per cui io dico che:
int {j+(i+1)} = i;
in pratica costruisco il nome della variabile usando la concatenazione di
j e (i+1). Un meccanismo di eval()?
Grazie
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 
Non puoi risolvere il problema usando un array?
Ad es.:
int[] j = new int[SOMERANDOMVALUE];
for (int i = 0; i < SOMERANDOMVALUE; i++) {
   j[i] = i;
}
Ciao,
Tommaso

 
-- 
Andrea Francia
http://www.andreafrancia.it/

>
Essenzialmente un eval di espressioni tipo:
String istr = "System.out.println(\"foo\")";
MyEval.eval(istr);
 > foo
Ho trovato questo:
http://www.janino.net/use.html
Ma volevo sapere cosa ne dite voi...
Grazie


Quello che vuoi fare è usare un linguaggio interpretato dentro la JVM.
Sono stati creati intepreti Java per molti linguaggi interpretati, tra 
cui JRuby, JPython, Groovy, Rhino, BeanShell.
Ognuno ha la sua sintassi che può essere assolutamente diversa da quella 
di Java ma c'e' ne qualcuno (forse BeanShell) che ha la stessa sintassi 
di Java, quindi puoi usarlo per fare l'eval di una stringa come 
"System.out.println(\"foo\")";
Per maggiori informazioni le parole giuste da cercare su Google sono:
	Scripting for the Java Platform
Janino non lo conosco.


 Janino non lo conosco.
Caspita, ma è davvero così difficile?
NON È UN FLAME, ma con Python bastava una eval()..
Grazie

 Grazie
Ma scusa quando hai iniziato a studiare Java dove stava scritto che è
un linguaggio di scripting?
Ogni paradigma ha i suoi vantaggi e svantaggi:
- performance;
- rischi per la sicurezza;
- complessità e manutenzione del codice;
- ...
Certo che per ognuno di questi argomenti potrebbero partire N flame...
ma ormai il gas è finito, spero che non ne parta alcuno. Da parte mia
posso dire che in generale preferisco i linguaggi compilati (come Java
appunto):
- con i linguaggi dinamici c'è il rischio che gli sviluppatori meno
attenti (o preparati) lascino in giro molti bug di tipo NullPointer,
parametri nell'ordine sbagliato, conversioni di tipo non previste;
- il refactoring, nonostante quello che qualche professorone dice, è
molto più difficile con i linguaggi dinamici;
poi ce ne sono altre ma ormai sono ben oltre il semplice intervento di
risposta al tuo post :)
Ciao ciao
--
www.megadix.it

 j e (i+1). Un meccanismo di eval()?
non puoi usare il collection framework ?
-- 
Davide Consonni

 pattern definito.
e' la cosa piu' brutta che abbia mai sentito :)... scusa, ma a cosa ti
serve? Come gia' ti e' stato suggerito, non puoi usare una collezione?
r.

ryuujin ha scritto:

Tipo un vettore?

 Grazie



Una mappa.
map.put("i" + i, i);
map.get("i0") == 0;
map.get("i1") == 1;
map.get("i2") == 2;


 Java è un linguaggio compilato.
Non per fare il pignolo ma sono sbagliate entrambe le affermazioni.
Sia python che java sono in realtà sia interpretati che compilati. In 
entrambi i casi il codice sorgente viene trasformato da un compilatore 
in un codice intermedio (bytecode); poi è l'interprete a eseguire il 
programma.
Ciao,
Emanuele

 programma.
Credo volesse dire che Java è a tipizzazione statica mentre Python è a 
tipizzazione dinamica. 


Due cose:
1. volevo dire quello che ho detto.
2. credo di aver detto una cosa sbagliata.
Devo ripassarmi un po' queste cose.
-- 
Andrea Francia
http://code.google.com/p/remoted-list/
 - Lazy loading lists through RMI.

2. credo di aver detto una cosa sbagliata.
Il problema è che si continua a parlare di "linguaggi interpretati" o
"linguaggi compilati". A voler essere VERAMENTE pignoli, sono
definizioni senza senso. E' per questo che poi nasce confusione. La
compilazione e l'interpretazione sono caratteristiche proprie delle
IMPLEMENTAZIONI di un linguaggio, non del linguaggio in sé.


Cavolo hai ragione!


 IMPLEMENTAZIONI di un linguaggio, non del linguaggio in sé.
E' un'assunzione che si fa, sebbene a lungo andare possa provocare 
confusione.
diei che parlare del linguaggio escludendo la sua implementazione, 
significherebbe parlare di un'insieme di regole sintattiche e semantiche.
Ciao 

 1. volevo dire quello che ho detto.
E poiché sia Java che Python vegongo prima compilati e poi interpretati, il 
motivo per cui quello che chiede l'OP sia fattibile in Python e non in Java 
è legato alla maggiore flessibilità nella tipizzazione che ha Python, o il 
motivo è un'altro? 


Credo che il motivo sia questo.
In Python ti permette di aggiungere una variabile locale a run-time 
senza averla definita prima.
In Java devi definirle prima.
Non so se c'e' un nome per queste caratteristiche.


Andrea Francia ha scritto:

Tipizzazione dinamica?

 motivo è un'altro?
Non ho capito la tua domanda :)
Con OP intendi OOP ? Cos'è secondo te che chiede l'OOP che in python è
possibile ma non in java ?
Ciao,
Emanuele

Non ho capito la tua domanda :)
OP sarebbe l'utente che inizia il thread.

 OP sarebbe l'utente che inizia il thread.
Credo che sia l'acronimo di Original Poster


significherebbe parlare di un'insieme di regole sintattiche e semantiche.
Il che è correttissimo. E' quello che fanno, ad esempio, gli standard
ISO di C e C++. Molte questioni descritte in quegli standard sono
appunto definite "implementation dependent".

Con OP intendi OOP ?
OP = Original Poster

 appunto definite "implementation dependent".
Da quello che mi ricordo di Linguaggi e Traduttori un linguaggio č, dato 
un alfabeto, solo la definizione l'insieme delle possibili sequenze che 
fanno parte del linguaggi.
Quindi la definizione del linguaggio dice che la sequenza
int main(int a, char** b) {}
fa parte del C e che la sequenza
ciccio-pasticcio
non fa parte del C
Gli standard C e C++ definiscono oltre al linguaggio la semantica del 
linguaggio, e alcune librerie standard.


 appunto definite "implementation dependent".
Si ma in genere quando si parla di linguaggi si parla della loro 
implementazione, č solo una consuetudine, che poi si debba cambiare o meno 
questa abitudine č un discorso che dovrebbe essere fatto in maniera piů 
ampia. Spesso anche nelle guide che insegnano a programmare si dice 
linguaggio e si intende il compilatore, ed č proprio lě che in molti nasce 
la confusione.