W zestawionych językach, zmienne nie mają nazwy. Nazwa widoczna w kodzie jest unikalnym identyfikatorem powiązanym z pewnym przesunięciem liczbowym. W identyfikatorze takim jak message_2
służy tylko do tego, aby był unikalnym identyfikatorem. Każdy może powiedzieć, że możesz wykonać trzy zmienne: message_125
, message_216
i message_343
. Dopóki możesz powiedzieć, co powinieneś umieścić w czym, działają tak dobrze, jak message_1
...
"Nazwa" zmiennej jest tylko dla Ciebie, zachowując je podczas pisania kodu.
Dynamiczne języki dodają możliwości, nie czyszcząc tabel symboli. Ale tablica symboli to po prostu skojarzenie nazwy z wartością. Ponieważ Perl oferuje tak tanie listy i hashe, nie ma potrzeby używania programowania/logistycznej metody śledzenia zmiennych, aby umożliwić elastyczny dostęp do środowiska wykonawczego.
Są szanse, że jeśli pojawi się nazewnictwa list @message1
, @message2
... - gdzie elementy różnią się tylko ich kolejność odniesienia, że nazwy te są tak samo dobre: $message[1]
, $message[2]
, ....
Ponadto, ponieważ tabele symboli zwykle odwzorowują od nazwy do przesunięcia (na stosie lub w stercie), to naprawdę nie jest o wiele więcej niż para klucz-wartość, którą można znaleźć w hash. Tak więc hashe działają tak samo dobrze, jak wyszukiwanie bardziej odrębnych nazw.
$h{messages} = [];
$h{replies} = [];
mam na myśli naprawdę, jeśli chcesz, możesz zapisać wszystko, co można umieścić w zmiennej leksykalnej w jeden hash dla zakresu, jeśli nie przeszkadza w piśmie: $h{variable_name}
za wszystko. Ale nie uzyskałbyś korzyści z niejawnego zarządzania Perla, a w różnych językach programiści preferowali domyślne zarządzanie zakresem.
Perl umożliwia symboliczną manipulację, ale przez lata języki dynamiczne odkryły mieszane błogosławieństwo. Ale w Perlu masz obie "perspektywy", aby nadać im nazwę. Ponieważ możesz określić, który kod w skompilowanym języku może być lepszy niż język dynamiczny, ustalono, że więcej "bezbłędnie" ma "skompilowaną perspektywę" na więcej rzeczy: tak jak widać z dostępnością zarządzania offsetami i sprawdź kompilowane zachowanie podane tobie w rdzeniu Perla, nie ma powodu, aby zadzierać z tablicą symboli, jeśli nie musisz.
Tworzenie tablicy dynamicznie jest tak proste, jak: []
. Przypisując je do miejsca w pamięci, kiedy nie wiemy, ile chcemy przechowywać, jest tak proste, jak:
push @message, [];
i tworząc listę list wszystkich naraz jest tak proste, jak:
@message = map { [] } 1..$num_lists;
dla określonej wartości w $num_lists
.
szansa na bardzo krótkiej odpowiedzi : [perllol] (http: // perldoc.perl.org/perllol.html). Nawet Perl ma LOLz. – Dummy00001