Ho sentito cambiare "dinamico" durante il runtime? Cos'è quello?

1

Ho sentito che queste lingue (ad esempio Groovy) hanno la capacità di cambiare dinamicamente il nome della variabile o i metodi di chiamata in runtime! Cosa intendevi per le lingue dinamiche ? E qual è la reale necessità di modificare qualsiasi valore durante il runtime? Questo non porta a confusione, perché in fase di esecuzione se modifichi qualche valore (o i tuoi costrutti di programmazione modificano qualcosa), allora qual è la necessità della compilazione (perché decide e conferma che questi valori verranno utilizzati, quindi non c'è alcun significato di cambiandolo in modo dinamico)? E so che dovrebbe esserci qualcosa di utile, quindi solo le persone hanno introdotto questi concetti!

Credo di essere chiaro riguardo alla mia domanda! E ho bisogno di una breve spiegazione:)

    
posta Ant's 05.03.2011 - 16:54
fonte

2 risposte

0

I linguaggi dinamici offrono flessibilità ed espressività nel codice. Ma può anche rendere le cose difficili da seguire a volte, e apre definitivamente i potenziali di abuso come sottolinea @ LLQ, ma ha anche i suoi benefici.

Poiché la domanda è stata approfondita, desidero sottolineare che esiste una guida specifica su Dynamic Groovy .

Prima di tutto, usando le metaclasses posso aumentare le mie lezioni in fase di runtime per modificare i comportamenti delle singole istanze o di tutte le istanze che sarà mai dichiarato, anche metodi statici. Queste metaclassi possono essere utilizzate per la convenienza (pensa di estendere le classi finali con i metodi che hai sempre desiderato ... Groovy ha infatti un numero di vantaggiosi incrementi di tutte le loro classi), ed è anche utile per deridere parti di classi per vari test o hack che ti servono.

Inoltre puoi implementare methodMissing e propertyMissing per utilizzare la firma del metodo richiamato per guidare dinamicamente il contenuto . Ad esempio, GORM ha Dynamic Finders sfrutta questo per rendere l'interrogazione più concisa. Invece di dover costruire una query HSQL, o altri cerchi posso fare object.findAllNameAndVersion("name",123) Come nota a margine Rails ha anche questo capacità .

Spero che questo aiuti!

    
risposta data 05.03.2011 - 18:00
fonte
0

L'unica cosa a cui posso pensare si avvicina a ciò di cui stai parlando sono le variabili variabili (orribili) di PHP.

$var = "foo";
$$var = "bar";
echo $var; //echo's foo
echo $foo; //echo's bar
echo ${$var}; //echo's bar

La "dinamica" di questo è se $var è stato assegnato un valore, ad esempio, da input, la variabile per "bar" sarebbe completamente diversa.

Come nota a margine, non farlo mai

    
risposta data 05.03.2011 - 17:24
fonte

Leggi altre domande sui tag