/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn 

Kodeord  


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
funktion som parameter, vbscript
Fra : Leif Neland


Dato : 17-10-11 11:19

Kan man have en funktion som parameter til en funktion?

function ilterer arr,funk
dim n
for n=lBound(arr) to uBound(arr)
funk arr(n)
next
end function

Det giver syntaxfejl...

Jeg ville bare kunne gøre noget mere elegant end
function ilterer_funktion1
function ilterer_funktion2
og istedet kunne
ilterer array1,funktion1
ilterer array2,funktion1
ilterer array1,funktion2
ilterer array2,funktion2

Leif



 
 
Stig Johansen (17-10-2011)
Kommentar
Fra : Stig Johansen


Dato : 17-10-11 12:05

Leif Neland wrote:

> Kan man have en funktion som parameter til en funktion?

Er det rekursiv funktionalitet du er ude efter ?

(Dit indlæg er meget uklart - for mig).

--
Med venlig hilsen
Stig Johansen

Leif Neland (17-10-2011)
Kommentar
Fra : Leif Neland


Dato : 17-10-11 13:48


"Stig Johansen" <wopr.dk@gmail.com> skrev i en meddelelse
news:4e9c0be9$0$288$14726298@news.sunsite.dk...
> Leif Neland wrote:
>
>> Kan man have en funktion som parameter til en funktion?
>
> Er det rekursiv funktionalitet du er ude efter ?
>
Jeg har et antal funktioner, som behandler et element.
Nu vil jeg gerne køre de funktioner på et array.
I stedet for at lave funktionerne om, eller lave en
"for n=lbound(arr) to ubound(arr) do funktion(arr(n))"
ville jeg lave en funktion, man giver et array og en funktion, hvert element
skal behandles med.

Svarende til php's array_map
array_map("funktion1",$arr);

Leif



Leif Neland (17-10-2011)
Kommentar
Fra : Leif Neland


Dato : 17-10-11 14:17


"Leif Neland" <leif@neland.dk> skrev i en meddelelse
news:4e9c2400$0$290$14726298@news.sunsite.dk...

> I stedet for at lave funktionerne om, eller lave en
> "for n=lbound(arr) to ubound(arr) do funktion(arr(n))"

Jeg mener at jeg gerne ville undgå at skulle lave dette for hver gang en af
mine funktioner skulle arbejde på alle elementerne i et array.
Så er det mere overskueligt med php's array_map("funktion1",$arr)

Leif




Stig Johansen (18-10-2011)
Kommentar
Fra : Stig Johansen


Dato : 18-10-11 09:11

Leif Neland wrote:

>> I stedet for at lave funktionerne om, eller lave en
>> "for n=lbound(arr) to ubound(arr) do funktion(arr(n))"
>
> Jeg mener at jeg gerne ville undgå at skulle lave dette for hver gang en
> af mine funktioner skulle arbejde på alle elementerne i et array.
> Så er det mere overskueligt med php's array_map("funktion1",$arr)

Jeg er stadig ikke sikker på om jeg forstår dig ret.

Enhver funktion skal defineres uanset hvilket sprog man bruger.

Kan du ikke bare lave (lidt pseudo):
sub function1 arr
dim n
for n=lbound(arr) to ubound(arr) do
....
end sub

og så bruge
function1 (array1)
function1 (array2)
function2 (array1)
......

Syntaxen er sikkert forkert, men meningen skulle være klar.

--
Med venlig hilsen
Stig Johansen

Leif Neland (18-10-2011)
Kommentar
Fra : Leif Neland


Dato : 18-10-11 18:29

Den 18-10-2011 10:10, Stig Johansen skrev:
> Leif Neland wrote:
>
>>> I stedet for at lave funktionerne om, eller lave en
>>> "for n=lbound(arr) to ubound(arr) do funktion(arr(n))"
>>
>> Jeg mener at jeg gerne ville undgå at skulle lave dette for hver gang en
>> af mine funktioner skulle arbejde på alle elementerne i et array.
>> Så er det mere overskueligt med php's array_map("funktion1",$arr)
>
> Jeg er stadig ikke sikker på om jeg forstår dig ret.
>
> Enhver funktion skal defineres uanset hvilket sprog man bruger.
>
> Kan du ikke bare lave (lidt pseudo):
> sub function1 arr
> dim n
> for n=lbound(arr) to ubound(arr) do
> ...
> end sub
>
> og så bruge
> function1 (array1)
> function1 (array2)
> function2 (array1)
> .....
>
> Syntaxen er sikkert forkert, men meningen skulle være klar.
>
Jo.

Jeg synes bare det er lettere at have en håndfuld funktioner, der
arbejder på et enkelt element, fremfor at lave den løkke der iltererer
over et array inden i hver funktion. Eller lave den hver gang, der skal
iltereres over arrayet.

Derfor ville jeg have en ilterator-funktion, man gav et funktionsnavn og
et array som parametre, hvorefter ilteratorfunktionen kaldte
parameterfunktionen for hvert element i arrayet.

Jeg ved snart ikke hvordan jeg skal formulere det anderledes

ilterer("sin",arr)
ilterer("cos",arr)
ilterer("funktion1",arr)

sub ilterer (funk,arr)
for n=lBound(arr) to uBound(arr)
funk(arr(n))
next
end sub

Leif

Stig Johansen (19-10-2011)
Kommentar
Fra : Stig Johansen


Dato : 19-10-11 08:26

Leif Neland wrote:

> Jeg ved snart ikke hvordan jeg skal formulere det anderledes

Jeg tror godt jeg forstår hvad du vil, men måske ikke hvorfor

Vbscript indeholder (SVJV) ikke mulkigheder for kald med funktioner som
parametre, så den mulighed er udelukket.

Jeg prøver at spørge ind til din _problemstilling_, eller
_programmeringsoplæg_ om du vil - og prøver at udlede en løsning.

ASP kan jo også køre jScript, så måske finder du en løsning der?

Jeg ved ikke om du er ude i at 'kort kode'='god kode', men sådan er det
ikke.

God kode = _læsbar_ kode!!

Selve _kodningen_ er jo den aller mindste del af et projekt, så der er ingen
besparelse ved at forsøge at minimere den (og derved gøre den uforståelig).


--
Med venlig hilsen
Stig Johansen

Leif Neland (19-10-2011)
Kommentar
Fra : Leif Neland


Dato : 19-10-11 12:59


"Stig Johansen" <wopr.dk@gmail.com> skrev i en meddelelse
news:4e9e7b6c$0$295$14726298@news.sunsite.dk...
>
> Jeg ved ikke om du er ude i at 'kort kode'='god kode', men sådan er det
> ikke.
>
> God kode = _læsbar_ kode!!
>
Det, der skal ske er:
<div class='clear'></div>
Gør noget for alle elementer i array
<div class='clear'></div>
Gør noget andet for alle elementer i array
<div class='clear'></div>
Gør noget tredie for alle elementer i array
<div class='clear'></div>

Nu skal løkken skrives tre gange, enten i de tre funktioner, eller udenom
funktionskaldet.
Hvis man kunne bruge funktionsnavne som parametre, skulle løkken kun laves
en gang, hvilket ville være specielt interessant, hvis man f.ex. ville tage
arrayet baglæns eller ville springe null eller andet over.

Men det kan man altså ikke.

Hvis man har behov for en speciel rækkefølge, så kunne man lave det med en
switch/case inde i ilterator-funktionen, men det er jo ikke så overskueligt.

Leif



Stig Johansen (20-10-2011)
Kommentar
Fra : Stig Johansen


Dato : 20-10-11 08:03

Leif Neland wrote:

> Nu skal løkken skrives tre gange, enten i de tre funktioner, eller udenom
> funktionskaldet.

Eller i en 'overordnet funktion'.
(pseudokode).
Sub iterfunc arr,whattodo
for counter = lbound to ubound ...
eller
for each x in y ...
( http://www.developerfusion.com/code/1601/iterate-arrays-with-for-each/ )
case whattodo of
1 : do function1
2 : do function2
....
end sub

sub function1 element
do something with element
end sub

osv...

--
Med venlig hilsen
Stig Johansen

Rune Jensen (18-10-2011)
Kommentar
Fra : Rune Jensen


Dato : 18-10-11 08:30

On 17 Okt., 05:47, "Leif Neland" <l...@neland.dk> wrote:

> Svarende til php's array_map
> array_map("funktion1",$arr);

Kender ikke PHP overhovedet, men du vil have en funktion, som laver en
funktion(?), så måske du i virkeligheden skal have fat i en class.


MVH
Rune Jensen

Søg
Reklame
Statistik
Spørgsmål : 177409
Tips : 31962
Nyheder : 719565
Indlæg : 6407776
Brugere : 218874

Månedens bedste
Årets bedste
Sidste års bedste