0Pricing
Ruby Academy · Lezione

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.

Utilizzo di send ed eval — illustrazione 1

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: 15

Esecuzione di codice dinamico con eval

Esecuzione di codice dinamico con eval

eval può definire dinamicamente variabili ed eseguire espressioni.

eval("x = 100")
puts x

Definizione 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_method

Rischi 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:

  • eval può eseguire codice non attendibile, causando vulnerabilità di sicurezza.
  • send può 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.

Utilizzo di send ed eval — illustrazione 10

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

  1. Che cos'è la metaprogrammazione?
  2. Definizione dinamica dei metodi
  3. Classi aperte e monkey patching
  4. Utilizzo di send ed eval
← Torna a Ruby Academy