miksi switch-case hyväksyy vain

int ja enum

onko tähän joku historiallinen peruste? olisi paljon siistimpää jos switch-lauseessa voisi käyttää vaikka string- ja muita objekteja, jolloin vertaus tehtäisiin equals-metodilla. säästyisi if-sekamelskalta.

1

522

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • azk.py

      On helppoa tehdä kääntäjä, joka kääntää switch-case-rakenteen tehokkaksi koodiksi hyppytaulun avulla. Tehokkuus tulee siitä, ettei switch-muuttujan arvoa tarvitse yksitellen verrata kaikkiin case-kohtiin, vaan voidaan suoraan hypätä oikeaan haaraan. Hyppytaulun rakentaminen on järkevää vain silloin, kun muuttujan arvoalue on suppea (C:n tapauksessa esim. enum- tai char-tyypeissä) tai kohtuullisen yhtenäinen (esim. jokin kokonaislukualue).

      Tietenkin on mahdollista toteuttaa kääntäjä, joka kääntää switch-casen mm. merkkijonojen tapauksessa if-elif-...-elif-endif-koodiksi. Jos näin ei ole tehty, kääntäjän/ohjelmointikielen suunnittelija on ehkä halunnut säilyttää selvän linjan siinä, millaiset kontrollirakenteet muuttuvat minkinlaiseksi konekieliseksi ohjelmaksi. Se on silloin tällöin erittäin mukavaa. Tiukassa paikassa saattaa joutua vieläkin laskemaan, montako kellojaksoa aliohjelman suoritus pahimmillaan kestää tai montako tavua muistia ohjelma tarvitsee.

      http://en.wikipedia.org/wiki/Jump_table

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Poliisi: Kymmenhenkinen pohjalaisperhe ollut vuoden kateissa kansainvälinen etsintäkuulutus Poliis

      Poliisi: Kymmenhenkinen pohjalaisperhe ollut vuoden kateissa – kansainvälinen etsintäkuulutus Poliisi pyytää yleisön apu
      Maailman menoa
      270
      2282
    2. En kadu sitä, että kohtasin hänet

      mutta kadun sitä, että aloin kirjoittamaan tänne palstalle. Jollain tasolla se saa vain asiat enemmän solmuun ja tekee n
      Ikävä
      83
      1001
    3. Oisko mitenkään mahdollisesti ihan pikkuisen ikävä..

      ...edes ihan pikkuisen pikkuisen ikävä sulla mua??.. Että miettisit vaikka vähän missähän se nyt on ja oiskohan hauska n
      Ikävä
      55
      979
    4. Mitään järkeä?

      Että ollaan erillään? Kummankin pää on kovilla.
      Ikävä
      108
      960
    5. Noniin rakas

      Annetaanko pikkuhiljaa jo olla, niin ehkä säilyy vienot hymyt kohdatessa. En edelleenkään halua sulle tai kenellekään mi
      Ikävä
      81
      921
    6. Lapuan sanomissa käy rytinä

      Pistivät sitten päätoimittajan pihalle
      Lapua
      42
      854
    7. Au pair -työ Thaimaassa herättää kiivasta keskustelua somessa: "4cm torakoita, huumeita, tauteja..."

      Au pairit -sarjan uusi kausi herättää keskustelua Suomi24 Keskustelupalvelussa. Mielipiteitä ladataan puolesta ja vastaa
      Tv-sarjat
      21
      838
    8. Helena Koivu : Ja kohta mennään taas

      Kohta kohtalon päivä lähestyy kuinka käy Helena Koivulle ? Kenen puolella olet? Jos vastauksesi on Helenan niin voisi
      Kotimaiset julkkisjuorut
      67
      736
    9. Tässä totuus jälleensyntymisestä - voit yllättyä

      Jumalasta syntyminen Raamatussa ei tässä Joh. 3:3. ole alkukielen mukaan ollenkaan sanaa uudestisyntyminen, vaan pelkä
      Jälleensyntyminen
      299
      684
    10. Oot ihana

      Toivottavasti nähdään sattumalta jonain kesäpäivänä♥️🥺🫂
      Ikävä
      33
      677
    Aihe