Basi di case/in
Corrispondenza strutturale
Basi di case/in è una lezione Ruby Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Ruby Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Ruby Academy include 4 lezioni in totale.
Arriva il pattern matching
L'espressione case/in di Ruby esegue il pattern matching strutturale: verifica la forma e il contenuto dei dati, non solo l'uguaglianza. È un'evoluzione potente rispetto a case/when.
case 42
in Integer
puts 'it is an integer'
endcase/in e case/when
case/when confronta usando === (con una logica simile all'uguaglianza). case/in destruttura i valori e può associare variabili. Utilizzi in per confrontare la struttura.
case 'hello'
in String => s
puts "string of length #{s.length}"
endCorrispondenza con valori letterali
Un ramo in può corrispondere a un valore letterale, comportandosi come un controllo preciso di uguaglianza.
case 3
in 1 then puts 'one'
in 3 then puts 'three'
in _ then puts 'other'
endPattern di tipo
Specificare una classe fa corrispondere qualsiasi valore di quel tipo, sfruttando internamente ===.
def describe(x)
case x
in Integer then 'number'
in String then 'text'
in Array then 'list'
end
end
puts(describe([1, 2]))Associazione di variabili
Un identificatore isolato in un pattern associa il valore trovato a una nuova variabile che può utilizzare nel ramo.
case [1, 2]
in [a, b]
puts(a + b)
endIl carattere jolly
Il carattere di sottolineatura _ corrisponde a qualsiasi valore senza effettuare associazioni. Lo utilizzi come caso generico o per ignorare determinate posizioni.
case 99
in 0 then puts 'zero'
in _ then puts 'something else'
endOperatore pin
Per confrontare con il valore di una variabile esistente (invece di associarne una nuova), la blocchi con ^.
expected = 5
case 5
in ^expected
puts 'matched the pinned value'
endPattern alternativi
Combini i pattern con | per far corrispondere una qualsiasi tra diverse alternative in un unico ramo.
case 'b'
in 'a' | 'b' | 'c'
puts 'in the first three letters'
endAssociazione dell'intera corrispondenza
Utilizzi pattern => name per verificare un pattern e associare contemporaneamente il valore trovato a un nome.
case 'Ruby'
in String => word
puts(word.upcase)
endNoMatchingPatternError
Se nessun ramo in corrisponde e non è presente alcun else, Ruby genera NoMatchingPatternError. Aggiunga un else per gestire il resto in modo sicuro.
case 10
in 1 then puts 'one'
else
puts 'no specific match'
endCorrispondenza su una riga
L'operatore => esegue una corrispondenza con assegnazione verso destra su una sola riga e genera un errore se fallisce. L'operatore in restituisce invece true/false.
result = [1, 2] in [Integer, Integer]
puts resultVerifica rapida
Che cosa succede se un case/in non ha alcun ramo corrispondente e non ha un else?
Riepilogo: nozioni di base su case/in
Ha appreso i fondamenti della corrispondenza strutturale:
case/inverifica la forma, non solo l'uguaglianza- Valori letterali, pattern di tipo e carattere jolly
_ - Associazione di variabili e operatore pin
^ - Alternative con
|epattern => name - L'assenza di corrispondenza genera
NoMatchingPatternError
case 7
in Integer => n then puts(n * 2)
endDomande Frequenti
La lezione «Basi di case/in» è gratuita?
Sì — il testo completo di «Basi di case/in» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Ruby Academy, passa a CoddyKit PRO. Il corso Ruby Academy include 4 lezioni in totale.
Cosa imparerò in «Basi di case/in»?
Corrispondenza strutturale Eserciti Ruby Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Ruby Academy?
Non è richiesta alcuna esperienza precedente. Ruby Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Basi di case/in»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Ruby Academy?
Sì. Ogni lezione Ruby Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.