Video: iOS App Development with Swift by Dan Armendariz 2024
I nogle tilfælde skal du foretage flere valg i R. Hvis og hvis … ellers erklæringer forlade dig med præcis to muligheder, men livet er sjældent så simpelt som det. Forestil dig, at du har nogle kunder i udlandet.
Lad os antage, at enhver kunde i udlandet ikke skal betale moms for eksemplets skyld. Dette giver dig nu tre forskellige momssatser: 12 procent for private kunder, 6 procent for offentlige kunder og ingen for udenlandske kunder.
Den mest intuitive måde at løse dette problem på er blot at kæde valgene. Hvis en klient bor i udlandet, skal du ikke opkræve moms. Ellers skal du kontrollere om klienten er offentlig eller privat og anvende den relevante momssats.
Hvis du definerer en argumentklient til din funktion, der kan tage værdierne 'i udlandet', 'offentlig' og 'privat', kan du kode den tidligere algoritme som denne:
hvis (klient == 'privat') {tot. pris <- netto. pris * 1. 12 # 12% moms} ellers {hvis (klient == 'offentlig') {tot. pris <- netto. pris * 1. 06 # 6% moms} ellers {tot. pris <- netto. pris * 1 # 0% moms}}
Med denne kode nestes du den anden, hvis … andet erklæring i den første hvis … andet erklæring. Det er helt acceptabelt, og det vil fungere, men forestil dig, hvad du skal gøre, hvis du havde fire eller flere muligheder. At sætte en erklæring i en erklæring i en erklæring i en erklæring skaber hurtigt et stort krøllet rod.
Heldigvis giver R dig mulighed for at skrive al den kode lidt tydeligere. Du kan kæde de hvis … andre udsagn som følger:
hvis (klient == 'privat') {tot. pris <- netto. pris * 1. 12} ellers hvis (klient == 'offentlig') {tot. pris <- netto. pris * 1. 06} else {tot. pris <- netto. pris}
I dette eksempel gør kæden en forskel på kun to beslag, men når du har flere muligheder, gør den kode læsbar. Bemærk, at du ikke behøver at teste om argumentklienten er lig med 'udlandet' (selvom det ikke ville være forkert at gøre det). Du går bare ud fra, at hvis kunden ikke har nogen af de to andre værdier, skal den være 'i udlandet'.
Kædet hvis … andre udsagn arbejder på en enkelt værdi ad gangen. Du kan ikke bruge disse kædet, hvis … ellers erklæringer på en vektoriseret måde. For det kan du neste flere ifelse udsagn, som dette:
Moms <- ifelse (klient == 'privat', 1. 12, ifelse (klient == 'offentlig', 1. 06, 1)) tot. pris <- netto. pris * moms
Dette stykke kode kan blive ganske forvirrende, hvis du har mere end tre valg. Løsningen på dette er at skifte.