Un po 'in ritardo, ma solo per aggiungere alle varie risposte. Credo che la soluzione elegante per utilizzare ora è questo:
func fizzBuzz(n: Int) {
switch (n%3==0, n%5==0) {
case (true, false):
print("Fizz")
case (false, true):
print("Buzz")
case (true, true):
print("FizzBuzz")
default:
print(n)
}
}
Swift può accendere tuple (struct SortA, ma costruito al volo, senza una definizione da qualche altra parte nel codice). Quindi nel caso delle etichette è possibile verificare più valori contemporaneamente, che è l'ideale per FizzBuzz!
Per rompere il basso un po ', questa parte
(n%3==0, n%5==0)
genera una tupla con due valori booleani. Poi un'etichetta caso come questo
case (true, true)
print("FizzBuzz")
controlla se entrambi i valori (essenzialmente n%3==0
e n%5==0
) sono vere e stampe "FizzBuzz"
Facendo in questo modo rende molto facilmente espandibile. Puoi aggiungere una terza definizione all'argomento switch e un terzo vero/falso ai tuoi casi e il tuo FizzBuzz può diventare un FizzBuzzJazz. È inoltre possibile assegnare un nome i valori nella tupla se volete da etichette semplicemente aggiungendo come
switch (fizz: n%3==0, buzz: n%5==0, jazz: n%7==0) {
case (fizz: true, buzz: false, jazz: true)
print("FizzJazz")
}
rendere il codice più leggibile in alcuni casi.
In aumento perché "non limitarmi a darmi il codice" è rinfrescante, grazie per quello. – Moritz
Primo suggerimento: clausola 'where' – vadian
Altro suggerimento: forse vuoi che il tuo metodo restituisca la stringa per ogni caso invece di stamparli e restituire n ... sperimentare con questo. Quindi è possibile utilizzare il risultato del metodo per stampare, invece di stampare nel metodo. – Moritz