|
|
rada otazek ...
|
2.1.2007 15:23
Johann von Nepomuk
|
tedy predne vsechno nejlepsi v Novem roce a diky za serial, ktery se konecne dostal k tomu podstatnemu.
Moje prvni otazka se ale tyka minuleho dilu, pisu ji zde, abychom to nemeli rozhazene. Predstavil jste tam strukturu (hash) %svet, ktera obsahuje lecos. Jde mi zhruba o to, jak vyvolavat ruzne funkce, ktere na ruznych urovnich budou plnit tuto strukturu a zobrazovat udaje v ni obsazene. Protoze nedokazu vlastne presne popsat muj problem, rad bych se k nemu dobral postupne. Tedy - predstavuji si, ze mame hlavni program a v nem vyvolavame po sobe funkce:
napln_udaje_svet(...)
napln_udaje_evropa(...)
napln_udaje_asie(...)
pricemz tyto funkce cini nasledujici:
napln_udaje_svet(..) vola po rade
- napln_udaje_evropa
- napln_udaje_asie
- ,,,, atd. ...
napln_udaje_evropa
- vlozi napr. pocet obyvatel pro stat a jeho rozlohu
Jak je patrno, nejde o to, co napr. konkretne dela funkce
napln_udaje_evropa, nybrz o to, ze tato funkce je volana jak
v tom hlavnim programu, tak pote uvnitr nejake funkce. Nyni jde o to,
jakym zpusobem predat napr. ten parametr %svet (asi jako pointer na hash ?), aby funkce napln_udaje_evropa byla porad stejna, at uz je volana z jakekoliv urovne v programu. Mohl by jste pro ty funkce napsat, jak vypadaji ta volani a deklarace parametru v tech funkcich? |
|
|
Re: rada otazek ...
|
2.1.2007 16:41
Jiří Václavík
|
Nevim jestli tomu spravne rozumim. Na zacatku mame nejakou strukturu $r_svet.
my $r_svet = {
"evropa" => {
"stat1" => {},
"stat2" => {},
}
};
Dale mame tuto funkci, ktera dostane $r_svet jako parametr.
sub napln_udaje_svet {
my $r_svet = shift;
napln_udaje_evropa($r_svet->{"evropa"});
}
A zde, pokud jsem pochopil, se dostavame k podstate otazky. Uvnitr je volana funkce napln_udaje_evropa s odkazem na prislusnou datovou podstrukturu jako parametrem. Do teto struktury pak bude ukladat informace. Zde je jednoduchy priklad takove funkce.
sub napln_udaje_evropa {
my $r_evropa = shift;
my $r_informace = ziskej_odnekud_informace_o_statech();
for (keys %$r_evropa){
$$r_evropa{$_}{"rozloha"} = $r_informace->{$_}{"rozloha"};
$$r_evropa{$_}{"lidi"} = $r_informace->{$_}{"lidi"};
}
} sub ziskej_odnekud_informace_o_statech {
return {
"stat1" => {
"rozloha" => 2,
"lidi" => 3,
},
"stat2" => {
"rozloha" => 5,
"lidi" => 6,
},
};
}
napln_udaje_evropa tedy dostane nejaky odkaz a prohleda, ktere staty se v teto strukture vyskytuji. Pak tyto staty z nejakeho zdroje naplni informacemi. Odpovedel jsem vam? |
|
|
Re: rada otazek ...
|
2.1.2007 19:12
Johann von Nepomuk
|
co bych potreboval je jeste ten hlavni program, ktery vyvolava ty dve funkce
- napln_udaje_svet
a
- napln_udaje_evropa
jestli by se to dalo jeste obmenit tak, aby se predavala vzdy jenom ta struktura svet a ne ty poddily te struktury. |
|
|
Re: rada otazek ...
|
3.1.2007 21:08
Jiří Václavík
|
Tak to staci trochu pozmenit funkci napln_udaje_evropa. Misto $r_evropa prijmeme argument $r_svet a $r_evropa si z nej pak vytvorime. Nic jineho menit nemusime.
my $r_svet = shift;
my $r_evropa = $r_svet->{"evropa"};
Ted muzeme z podprogramu napln_udaje_svet volat napln_udaje_evropa timto zpusobem.
napln_udaje_evropa($r_svet);
|
|
|
|
|
KOMENTARZE
|
Tylko zarejestrowani użytkownicy mogą dopisywać komentarze.
|
|
Szukanie oprogramowania
|
©Pavel Kysilka - 2003-2024 |
maillinuxsoft.cz | Design:
www.megadesign.cz
|