I de tidligere lektioner har du lært at bruge funktioner som f.eks. Ubound og Weekday. I denne lektion vil du lære at lave dine egne funktioner med
Function.
En funktion kan behandle input og returnere et output. Det kan være nyttigt hvis du f.eks. har en lang række af data, som du skal have behandlet - eller hvis du på anden måde har en beregning eller rutine, som skal foretages mange gange.
En funktion opbygges på formen:
Function Navn(argumentliste) Sætning End Function
Det vil sige at hvis vi ønsker at lave en helt simpel funktion, som kan plusser værdien 1 til et tal, kunne den se sådan her ud:
Function PlusEn(t) t = t + 1 PlusEn = t End Function
Vores funktion hedder altså PlusEn, og skal kaldes med et tal - f.eks. 34 ...
Response.Write PlusEn(34)
... som ikke overraskende vil returnere 35.
Dette eksempel arbejder med tal - men funktioner kan på præcis samme måde laves til at behandle tekst, datoer eller noget helt tredje. Man kan også lave funktioner, som kaldes med mange forskellige argumenter. I løbet af denne lektion vil du se mange forskellige eksempler på funktioner.
Som nævnt kan man uden problemer lave en funktion, som kan kaldes med flere argumenter. I dette eksempel vil vi lave en funktion, som kaldes med tre tal - og derefter returnerer værdien af de to tal sammenlagt:
<html> <head> <title>Løkker</title> </head> <body> <% Function Plus(tal1,tal2,tal3) Plus = tal1 + tal2 + tal3 End Function Response.Write "123 + 654 + 9 er lig med " & Plus(123,654,9) %> </body> </html>
OK? Det var jo næsten for simpelt - men pointet var bare at vise dig at en funktion kan kaldes med flere argumenter.
Lad os prøve at lave en lidt mere kompliceret funktion, som kaldes med en dato og tidspunkt, og returnerer formatet: onsdag d. 14. februar 2001 kl. 13:54
<html> <head> <title>Løkker</title> </head> <body> <% Function DanskDatoTid(dato) ' Array med danske navne på dage arrDag = ",mandag,tirsdag,onsdag,torsdag,fredag,lørdag,søndag" arrDag = Split(arrDag,",") ' Array med danske navne på måneder arrMaaned = ",januar,februar,marts,april,maj,juni,juli,august," arrMaaned = arrMaaned & "september,oktober,november,december" arrMaaned = Split(arrMaaned,",") ' Datoen sammensættes DanskDatoTid = arrDag(Weekday(dato,VbMonday)) & " d. " & Day(dato) & ". " DanskDatoTid = DanskDatoTid & arrMaaned(Month(dato)) & " " & Year(dato) DanskDatoTid = DanskDatoTid & " kl. " & FormatDateTime(dato, vbShortTime) End Function ' Afprøv funktionen Response.Write DanskDatoTid(Now) %> </body> </html>
OBS: læg mærke til hvordan f.eks. 'arrMaaned' sammensættes over flere linier. Dette gøres af hensyn til de brugere af denne side, som benytter en lav skærmopløsning. Metoden har ingen betydning for selve koden.
Funktionen ovenfor fungerer på alle webservere uanset sprog. Det vil sige at du f.eks. kan bruge sådan en funktion hvis dit website er hostet på en amerikansk server, men du gerne vil have danske datoer.
Vi vil ikke på nuværende tidspunkt gå mere i dybden med funktioner - nu ved du lidt om hvordan de fungerer.