Stringa come nome di variabile

di il
6 risposte

Stringa come nome di variabile

Ho il seguente spezzone di codice:

	String[] f = { "CEMIL", "Elettra"};
	private HashMap<String, List<String>> facilityPlatform = new HashMap<>();
	
	String[] elettra = {"Protein production in E. Coli",
                            "Protein production in insect cells"};

        String[] cemil = {"X-ray macromolecular crystallography",
                            "Small Angle X-ray Scattering (SAXS)",
                            "High-Throughput Screenining facility"};
                            
        facilityPlatform.put("CEMIL", Arrays.asList(cemil));
        facilityPlatform.put("Elettra", Arrays.asList(elettra));
Sarebbe possibile ottenere una cosa del genere?

   for(String fac: f) {
   	facilityPlatform.put(fac, Arrays.asList(fac.toLowerCase()));
   }

6 Risposte

  • Re: Stringa come nome di variabile

    morellik ha scritto:


    Sarebbe possibile ottenere una cosa del genere?
    
       for(String fac: f) {
       	facilityPlatform.put(fac, Arrays.asList(fac.toLowerCase()));
       }
    
    Ma così non fai la stessa cosa che hai fatto es. nel

    facilityPlatform.put("CEMIL", Arrays.asList(cemil));

    perché qui hai associato "CEMIL" ad una lista di stringhe dal String[] cemil.

    Mentre qui:

    facilityPlatform.put(fac, Arrays.asList(fac.toLowerCase()));

    associ es. "CEMIL" a "cemil".


    Quindi?? (ovviamente non conosco il contesto).
  • Re: Stringa come nome di variabile

    Non mi sono spiegato bene. Ci riprovo. Avendo una lista di nomi (f) che sono anche chiavi della HashMap, vorrei ciclare su f e usare il valore di f come nome di variabile per la creazione dell'array.

    facilityPlatform.put("CEMIL", Arrays.asList(cemil)) -> facilityPlatform.put(fac, Arrays.asList(fac.toLowerCase()));

    Vorrei usare il valore di fac come nome della variabile di array di stringhe ("cemil" -> cemil).
  • Re: Stringa come nome di variabile

    morellik ha scritto:


    Non mi sono spiegato bene. Ci riprovo. Avendo una lista di nomi (f) che sono anche chiavi della HashMap, vorrei ciclare su f e usare il valore di f come nome di variabile per la creazione dell'array.
    Ah ok, ho capito

    Che da fac.toLowerCase() (es. "cemil") vai a referenziare la variabile cemil.
    No, "non puoi", non c'è modo di referenziare variabili LOCALI dal nome.

    Quello che puoi fare è strutturare/modellare diversamente le cose.


    Ma tra l'altro, cosa c'è che non ti piace/va del codice iniziale:
    	String[] elettra = {"Protein production in E. Coli",
                                "Protein production in insect cells"};
    
            String[] cemil = {"X-ray macromolecular crystallography",
                                "Small Angle X-ray Scattering (SAXS)",
                                "High-Throughput Screenining facility"};
                                
            facilityPlatform.put("CEMIL", Arrays.asList(cemil));
            facilityPlatform.put("Elettra", Arrays.asList(elettra));
    Che di per sé è corretto/sensato?? Perché ne hai tanti tanti (non solo 2)?? O per altro?
    Insomma, perché vuoi per forza ciclare su un array??
  • Re: Stringa come nome di variabile

    Soprattutto per evitare errori di battitura, ma è solo una mia picca. Dato che ho una lista di nomi e la stessa va ripetuta nella hashmap volevo strutturare la cosa per inserire nel codice solo una volta la lista dei nomi ed usarla per tutto il resto. Ma se non c'e' modo me ne farò una ragione )
  • Re: Stringa come nome di variabile

    morellik ha scritto:


    Soprattutto per evitare errori di battitura, ma è solo una mia picca. Dato che ho una lista di nomi e la stessa va ripetuta nella hashmap volevo strutturare la cosa per inserire nel codice solo una volta la lista dei nomi ed usarla per tutto il resto. Ma se non c'e' modo me ne farò una ragione )
    Beh .. bisognerebbe capire meglio cosa vuoi fare e perché, non ho ovviamente visione completa. Tanto per dire: quelle variabili es. String[] cemil ti servono anche per altro o solo per il put?

    Perché ad esempio non puoi fare es.:
    facilityPlatform.put("CEMIL", Arrays.asList(
            "X-ray macromolecular crystallography",
            "Small Angle X-ray Scattering (SAXS)",
            "High-Throughput Screenining facility"
            ));
    Poi se dopo volessi avere un array delle chiavi, lo puoi facilmente ottenere.
  • Re: Stringa come nome di variabile

    Mi serve solo per il put. Quindi te suggeriresti di fare il contrario, Una volta impostate, farsi la lista dei nomi dalle chiavi. Potrebbe essere un'idea. Grazie
Devi accedere o registrarti per scrivere nel forum
6 risposte