Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20

Discussione: switch case or

  1. #1

    switch case or

    Salve vorrei un vostro aiuto su una condizione switch case.

    è possibile inserire in uno switch case la condizione "or"?

    codice:
    	switch(url){
    		case (url=="NORMALI" || url=="NORMAL") : var position=0;
    		break;
    		case (url=="GRANDI" || url=="LARGE") : var position=885;
    		break;
    		case (url=="GRANDISSIME" || url=="EXTRA LARGE") : var position=1770;
    		break;
    	}
    ho provato ma non funziona.

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    So per certo che si può in php, anche se non mi piace come sintassi, nel tuo caso non è più semplice fare:

    codice:
    switch(url){
    		case "NORMALI":
                    case "NORMAL":
                      var position=0;
    		break;
    		case "GRANDI":
                    case "LARGE":
                      var position=885;
    		break;
    		case "GRANDISSIME":
                    case "EXTRA LARGE":
                      var position=1770;
    		break;
    	}

  3. #3
    oppure:

    codice:
    	switch(true){
    		case (url=="NORMALI" || url=="NORMAL") : var position=0;
    		break;
    		case (url=="GRANDI" || url=="LARGE") : var position=885;
    		break;
    		case (url=="GRANDISSIME" || url=="EXTRA LARGE") : var position=1770;
    		break;
    	}

  4. #4
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Originariamente inviato da techno
    è possibile inserire in uno switch case la condizione "or"?
    La risposta è no. Puoi usare la soluzione di lucavizzi, ma in quel caso si perde il senso della sintesi dell'operatore switch e la cosa diventa più prolissa che usare un normalissimo if/else (che paragona il contenuto della parentesi a "true" per definizione, senza bisogno che glielo indichi tu). Per fortuna però l'ingegno consente di superare qualsiasi difficoltà...

    codice:
    var scelta = url.replace(/^(?:(NORMALI|NORMAL)|(GRANDI|LARGE)|(GRANDISSIMI|EXTRA LARGE))$/, ".$1.$2.$3").match(/\.*/)[0].length - 1;
    
    var position = scelta * 885;
    P.S. Per una questione di "pulizia" io opterei per un normalissimo if/else. Ma a te la scelta...


  5. #5
    Originariamente inviato da techno
    è possibile inserire in uno switch case la condizione "or"?
    Originariamente inviato da carlomarx
    La risposta è no.





    Originariamente inviato da carlomarx
    Puoi usare la soluzione di lucavizzi, ma in quel caso si perde il senso della sintesi dell'operatore switch e la cosa diventa più prolissa che usare un normalissimo if/else (che paragona il contenuto della parentesi a "true" per definizione, senza bisogno che glielo indichi tu).
    Secondo me è più elegante e meno prolisso uno switch al true, soprattutto considerando il fatto che Javascript non permette l'utilizzo di "elseif", a differenza di altri linguaggi.

    Switch al true:
    codice:
    switch(true){
    	case (url=="NORMALI" || url=="NORMAL") : var position=0; break;
    	case (url=="GRANDI" || url=="LARGE") : var position=885; break;
    	case (url=="GRANDISSIME" || url=="EXTRA LARGE") : var position=1770; break;
    }
    If/else:
    codice:
    if(url=="NORMALI" || url=="NORMAL"){
    	var position=0;
    }else{
    	if(url=="GRANDI" || url=="LARGE"){
    		var position=885;
    	}else{
    		if(url=="GRANDISSIME" || url=="EXTRA LARGE"){
    			var position=1770;
    		}
    	}
    }
    L'espressione regolare si adatta, anche bene, al caso specifico, visto che parliamo di url, ma comunque non può sostituire un costrutto, a mio avviso.


  6. #6
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Originariamente inviato da lucavizzi Secondo me è più elegante e meno prolisso uno switch al true, soprattutto considerando il fatto che Javascript non permette l'utilizzo di "elseif", a differenza di altri linguaggi.
    Ma come in javascript non c'è elseif?????? L'unica differenza con altri linguaggi è che si scrive staccato!!!

    codice:
    	if (url === "NORMALI" || url === "NORMAL") { var position=0; }
    	else if (url === "GRANDI" || url === "LARGE") { var position=885; }
    	else if (url === "GRANDISSIME" || url === "EXTRA LARGE") { var position=1770; }
    Un'altra buona sintesi sono gli operatori ternari...:

    codice:
    var position = url === "NORMALI" || url === "NORMAL" ? 0 : url ==="GRANDI" || url === "LARGE" ? : 885 : 1770;

  7. #7
    Comunque è possibile usare gli operatori e non è prolisso rispetto all'else if

  8. #8
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Originariamente inviato da lucavizzi
    Comunque è possibile usare gli operatori e non è prolisso rispetto all'else if
    possibile è possibile... su quanto sia elegante... è soggettivo

  9. #9
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da carlomarx
    possibile è possibile... su quanto sia elegante... è soggettivo
    +1

  10. #10
    Originariamente inviato da carlomarx
    possibile è possibile... su quanto sia elegante... è soggettivo
    Ieri non era possibile o era prolisso, oggi non è elegante...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.