Utilizzo di send ed eval
Scopra come eseguire chiamate dinamiche ai metodi e valutare stringhe come codice Ruby.
Utilizzo di send ed eval è una lezione Ruby Academy gratuita su CoddyKit. Questa è la lezione 4 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.
Esecuzione dinamica del codice
Utilizzo di send ed eval
Ruby fornisce metodi potenti come send ed eval per eseguire dinamicamente il codice.
Questi metodi consentono di chiamare dinamicamente i metodi e di valutare le espressioni Ruby durante l'esecuzione.

Che cos'è il metodo send
Che cos'è il metodo send
send consente di chiamare dinamicamente i metodi in base al loro nome.
Può richiamare metodi privati e pubblici.
class Person
def greet
'Hello!'
end
end
p = Person.new
puts p.send(:greet)Utilizzo di send con argomenti
Utilizzo di send con argomenti
send può passare dinamicamente gli argomenti ai metodi.
class Person
def greet(name)
"Hello, #{name}!"
end
end
p = Person.new
puts p.send(:greet, 'Alice')Chiamata di metodi privati con send
Chiamata di metodi privati con send
send può ignorare le regole di visibilità dei metodi e chiamare metodi privati.
class Person
private
def secret
'This is a secret!'
end
end
p = Person.new
puts p.send(:secret)Che cos'è il metodo eval
Che cos'è il metodo eval
eval esegue una stringa come codice Ruby durante l'esecuzione.
code = "5 + 10"
puts eval(code) # Outputs: 15Esecuzione di codice dinamico con eval
Esecuzione di codice dinamico con eval
eval può definire dinamicamente variabili ed eseguire espressioni.
eval("x = 100")
puts xDefinizione di metodi con eval
Definizione di metodi con eval
Utilizzi eval per definire dinamicamente i metodi.
eval("def dynamic_method; 'Hello from eval'; end")
puts dynamic_methodRischi per la sicurezza di send ed eval
Rischi per la sicurezza di send ed eval
L'utilizzo improprio di send ed eval può introdurre rischi per la sicurezza:
evalpuò eseguire codice non attendibile, causando vulnerabilità di sicurezza.sendpuò chiamare metodi privati o sensibili.- Li utilizzi con cautela per evitare comportamenti imprevisti.
Riepilogo di send ed eval
Congratulazioni!
Ha imparato a utilizzare send ed eval per l'esecuzione dinamica dei metodi.
Con questo si conclude la sezione Metaprogramming in Ruby.

Domande Frequenti
La lezione «Utilizzo di send ed eval» è gratuita?
Sì — il testo completo di «Utilizzo di send ed eval» è 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 «Utilizzo di send ed eval»?
Scopra come eseguire chiamate dinamiche ai metodi e valutare stringhe come codice Ruby. 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 4 di 4.
Quanto tempo richiede la lezione «Utilizzo di send ed eval»?
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.
Tutte le lezioni di questo corso
- Che cos'è la metaprogrammazione?
- Definizione dinamica dei metodi
- Classi aperte e monkey patching
- Utilizzo di send ed eval