Avatar billede sprutnik Nybegynder
22. april 2006 - 02:02 Der er 2 kommentarer og
1 løsning

Omskrivning af if statement

Jeg har følgende klump kode:
function tracer() {
    if (Key.getCode() == 49 && this["field"+counter] == 1) {
        this["field"+nextcounter] = random(9)+1;
    } else if (Key.getCode() == 50 && this["field"+counter] == 2) {
        this["field"+nextcounter] = random(9)+1;
    } else if (Key.getCode() == 51 && this["field"+counter] == 3) {
        this["field"+nextcounter] = random(9)+1;
    } else if (Key.getCode() == 52 && this["field"+counter] == 4) {
        this["field"+nextcounter] = random(9)+1;
    } else if (Key.getCode() == 53 && this["field"+counter] == 5) {
        this["field"+nextcounter] = random(9)+1;
    } else if (Key.getCode() == 54 && this["field"+counter] == 6) {
        this["field"+nextcounter] = random(9)+1;
    } else if (Key.getCode() == 55 && this["field"+counter] == 7) {
        this["field"+nextcounter] = random(9)+1;
    } else if (Key.getCode() == 56 && this["field"+counter] == 8) {
        this["field"+nextcounter] = random(9)+1;
    } else if (Key.getCode() == 57 && this["field"+counter] == 9) {
        this["field"+nextcounter] = random(9)+1;
    }
}

Jeg vil gerne høre, om det er en rodet måde at skrive det på og om det kan skrives mere optimalt. Jeg tænkte på, at lave det som et switch-statement, men jeg kan ikke helt regne ud om det kan gøres på den måde. Bare det kræver så lidt processorkraft som overhovedet muligt at afvikle det.
Avatar billede pidgeot Nybegynder
22. april 2006 - 02:48 #1
Mit bedste bud:

function tracer() {
  if (Key.getCode() >= 49 && Key.getCode() <= 57 && this["field"+counter]==Key.getCode()-48) {
    this["field"+nextcounter] = random(9)+1;
  }
}

Jeg kan ikke helt se hvordan det kan gøres mere optimalt end det.
Avatar billede sprutnik Nybegynder
22. april 2006 - 03:12 #2
I må heller lige få konteksten for koden også.
På min scene har jeg tre dynamiske tekstfelter: field1, field2 og field3. I field1 står et random tal mellem 1 og 9. Er tallet f.eks. 4 skal der trykkes på tast nummer fire, er tallet syv skal der trykkes på tast nummer 7 og etc. Når der er trykket på en tast kommer der er nyt random tal mellem 1 og 9 i field2. Og dernæst i field3.
Måske er min ovenstående kodestump udmærket, jeg synes, bare den er grim. Jeg ville foretrække et switch statement, men ved ikke hvordan det i dette tilfælde skal gribes an. Planen er det måske skal afvikles på en mobiltelefon på et senere tidspunkt, så jeg vil gerne gøre koden så effektiv som mulig, så der ikke er alt for meget der skal skrives om.
Så mit spørgsmål lyder nok: er kodestumpen den mest effektive måde at skrive det på eller kan det gøres bedre? Og i så fald hvordan?
Avatar billede sprutnik Nybegynder
19. marts 2008 - 04:49 #3
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB