$paramhash{'navn'} = "Johan Do";
$paramhash{'tekst'} = \@tekst;
$paramhash{'noeannet'} = \%annenhash;
$return = func(%paramhash); # evt. func(\%paramhash);
Jeg funderte på å lage en wrapper for å håndtere dette litt mer uniformt på
alle funksjonene jeg bruker, men før jeg legger masse ressurser i dette
lurer jeg på om det er store bakdeler med dette som jeg ikke klarer å se
akkurat nå.
.b
--
There is no grace, there is no guilt.
This is the law, Do what thou wilt!
> I det siste har jeg gått mer og mer over til å sende hasher som parameter
> til funksjoner, fremfor å sende enkeltparameter. Typisk gjør jeg dette ved
> å lage en %paramhash, putter alle parameter inn i hashen, og sender enten
> selve hashen eller en hashref som eneste parameter til funksjonen. Et
> pseudoeksempel kan være:
>
> $paramhash{'navn'} = "Johan Do";
> $paramhash{'tekst'} = \@tekst;
> $paramhash{'noeannet'} = \%annenhash;
> $return = func(%paramhash); # evt. func(\%paramhash);
>
> Jeg funderte på å lage en wrapper for å håndtere dette litt mer uniformt
> på alle funksjonene jeg bruker, men før jeg legger masse ressurser i dette
> lurer jeg på om det er store bakdeler med dette som jeg ikke klarer å se
> akkurat nå.
Helt klart en fordel om du har mange parametre som skal overføres. Det var
jo dette jeg slet litt med i går og tidlig i dag (se tildigere posting
her). Dokumentasjonen var, for meg, ikke helt forståelig. Det var først da
jeg fikk et godt eksempel på kode at jeg så lyset... :-)
--
Jørn Dahl-Stamnes
http://www.dahl-stamnes.net/dahls/
Tja.. hvis du inni funksjonen bruker $hash{'param'} i stedet for my
$param, advarer ikke -w/"use strict" om tyrkkleif i parameternavnet.
--
Hallvard
> I det siste har jeg gått mer og mer over til å sende hasher som parameter
> til funksjoner, fremfor å sende enkeltparameter.
Latmannsvariant. Hvis du virkelig føler behov for dette, så har du
garantert for mange parametre. IMHO
Bjørn
--
I don't want to hear about your venereal disease.
Det er vel mere for å forenkle funksjonskall og få en enhetlige
funksjonssignaturer. Som sagt vurderer jeg å lage en wrapper rundt en del
funksjonskall. Dette gjør at jeg lettere kan lage parameterhåndtering i
funksjoner. Den første idéen kom etter å ha skrevet
function f
{
$var1 = shift;
$var2 = shift;
$var3 = shift;
...
}
nok ganger. Jeg er også lei av å måtte ha funksjonssignaturen foran meg når
jeg skal gjøre funksjonskall.
Jeg er nok blitt lat av å jobbe med Visual Studio og tilsvarende som gjør
parameterhåndtering veldig mye enklere. Jeg bruker ikke Perl nok til at jeg
vil investere i Visual Perl.
Jeg bruker dette på funksjoner med to parametre, så garantien din feiler er
jeg redd :-)
Urk.
my($var1, $var2, $var3) = @_;
> (...) Jeg er også lei av å måtte ha funksjonssignaturen foran
> meg når jeg skal gjøre funksjonskall.
Det trenger du fremdeles, med en ny vri. I stedet for å måtte vite
rekkefølgen på parametrene vil du måtte vite navnene på parametrene.
Men det vil hjelpe om du sjekker at du bare sender parameternavn som
funksjonen bruker, og gjør die() ved feil.
--
Hallvard
Jojo, det var for illustrasjonens skyld, da...
>> (...) Jeg er også lei av å måtte ha funksjonssignaturen foran
>> meg når jeg skal gjøre funksjonskall.
>
> Det trenger du fremdeles, med en ny vri. I stedet for å måtte vite
> rekkefølgen på parametrene vil du måtte vite navnene på parametrene.
For min del er det veldig mye lettere å huske parameternavn enn
parameterrekkefølge.