Avatar billede michael_ingeman Nybegynder
08. januar 2001 - 10:30 Der er 21 kommentarer og
1 løsning

Forskel på Sub og Function?

Hejsa
Hvad er egentlig forskellen på Subs og Functions? Jeg har kun én gang oplevet at man ikke kunne bruge en function i stedet for en Sub, og det var ved initieringen af objekter i VBScript.

Hvornår er det bedst at bruge en Sub i stedet for en Function?
Avatar billede nolle_k Nybegynder
08. januar 2001 - 10:35 #1
En Function kan returnere en værdi det kan en Sub ikke!! Jeg ved ikke om der er andre forskelle!! Så hvis ikke du skal returnere en værdi fra metoden så benyt en Sub ellers en Func! JEg kunne forestille mig at Compileren bruger flere resourcer når vi taler om Functioner i VB end når vi taler om Sub\'er!!

//Nolle_K
Avatar billede nolle_k Nybegynder
08. januar 2001 - 10:36 #2
Det skulle have været et svar!
//Nolle_K
Avatar billede cstern Nybegynder
08. januar 2001 - 10:44 #3
dybest set returnerer en Sub også værdier, men kun i parametrene. En function udgør selv værdien:

Dim A As Integer
A = MyFunct(B, C, D)

eller

Dim A As Integer
MySub A, B, C, D  \'MySub kan modificere A som har en ny værdi efter kaldet

Avatar billede nolle_k Nybegynder
08. januar 2001 - 10:46 #4
Det kan en Function jo også! Det er jo bare et specifiecerings spørgsmål!
Avatar billede michael_ingeman Nybegynder
08. januar 2001 - 11:02 #5
Men i hvilke situationer kan man ikke bruge en funktion i stedet for en sub?
Avatar billede nolle_k Nybegynder
08. januar 2001 - 11:09 #6
Ikke nogen hvor du bestemme om det skal være en Function eller en sub! Men i tilfælde hvor vi taler om Event handlere så er det Nødt til at være Subs. Det vil sige i forbindelse med

Private SUb Command1_Click()! Her skal det være en sub! JEg ved ikke hvorfor men det skal det bare!
Avatar billede michael_ingeman Nybegynder
08. januar 2001 - 11:22 #7
Kuul :o)
Tak for hjælpen.
Avatar billede nolle_k Nybegynder
08. januar 2001 - 11:24 #8
Velbekomme!
Avatar billede chris2k Nybegynder
08. januar 2001 - 14:09 #9
Næste gang så læs lige hjælpefilerne først
Avatar billede nolle_k Nybegynder
08. januar 2001 - 14:16 #10
Hvorfor det?? Det her er da meget mere hyggeligt! *GG*
Avatar billede chris2k Nybegynder
08. januar 2001 - 14:20 #11
Tja. Jeg er lige kommet hjem fra skole. Jeg har fået 29 mails.

1 af dem var personlige, resten var små diskutioner om hvorvidt man skal læse hjælpe filer eller ikke. Jeg syntes ikke det er hyggeligt. Eksperten.dk er for dem der ikke kunne finde informationer andre steder. Ellers havde siden nok heddet Begynderen.dk
Avatar billede nolle_k Nybegynder
08. januar 2001 - 14:22 #12
OK! Jeg forstår!!!
Avatar billede chris2k Nybegynder
08. januar 2001 - 14:24 #13
Tak!!!

Du er den første
Avatar billede johs_j Novice
08. januar 2001 - 20:53 #14
Nolle_k skriver at en SUB ikke kan returnere en værdi. Det er IKKE sandt. En funktion kan kun returnere 1 værdi. En SUB kan returnere flere værdier når den bliver kaldt fra en anden SUB.

eks.

Call Test(a, b, c, d)
2 eller alle 4 variabler kan overføre værdier til SUB og returnere værdier igen fra SUB.




Sub Test (a,b,c,d)
program linier
End Sub
Avatar billede tdaugaard Nybegynder
08. januar 2001 - 21:17 #15
En lille side note som kan være nyttig!
Hvis man overfører parametrer til en sub/function, der bliver ændret i den pågældende sub/function, men man ikke ønsker at de også skal returneres af sub/function\'en så bruger man ByVal (By Value..)

Sub dummy (ByVal a)
  a=a*3
End Sub

i dette tilfælde vil \"a\" ikke blive returneret da vi faktisk opretter en ny variable istedet for at bruge en reference
Avatar billede michael_ingeman Nybegynder
08. januar 2001 - 22:14 #16
Ja, I må undskylde hvis jeg har spildt chris2ks mailserverplads. Det var ikke det der var hensigten med mit spørgsmål. Jeg har selv arbejdet en del med VBScript, og har bare ofte undret mig over hvorfor der både er subs og functions. Den eneste gode grund jeg har fundet frem til er at MS har vedtaget at bruge subs til event håndtering. Og så er der måske et performancespørgsmål. Men hvis man er ude efter performance, så bruger man ikke VBScript ;o)

Jeg har også læst hjælpefilerne. Men som så meget andet fra MS er de ikke meget værd til andet en forklaring af syntaksen. Der står så vidt jeg har kunnet se intet om hvornår man skal bruge subs og hvornår man skal bruge functions.
Derfor mener jeg det er et udmærket spørgsmål at stille her.
Avatar billede chris2k Nybegynder
08. januar 2001 - 22:25 #17
Så kan du ikke læse, for det var den måde jeg fandt ud af det på. Og jeg var kun 12 (nu er jeg 16). Og du er vel ikke dummere end en på 12 vel?
Avatar billede nolle_k Nybegynder
09. januar 2001 - 08:24 #18
Slap dog af!!!!!

Vi kan ikke alle være en lige så stor Begavelse som dig, vel chris2k!!!

Og desuden plejer personer, der fører sig frem på den måde ikke at have alt for meget at flytte med! Men nu er det jo ikke et sted, hvor man sviner hinanden til. Dem findes der sgu nok af på nettet i forvejen!

Avatar billede chris2k Nybegynder
10. januar 2001 - 13:55 #19
Det regnede jeg hellerikke med.

Jeg er bare lidt træt af den indstilning folk har. Jeg får sgu 50 mails hver dag, om folk der ikke gider at læse manualerne. Jeg vil da meget gerne hjælpe folk med seriøse problemer, men jeg er ved at give op pga alle de useriøse.
Avatar billede tdaugaard Nybegynder
10. januar 2001 - 17:23 #20
chris2k:> man skal ikke kaste med sten når man selv bor i glashus!!! Du er sku ikke alt for seriøs selv. Jeg har set spm. hvor du svarer med komplet ondsvage svar da du ved gud ikke kender svaret!
Avatar billede nolle_k Nybegynder
10. januar 2001 - 17:25 #21
Man kan vel næppe kalde det et tab! *GG*
Avatar billede tdaugaard Nybegynder
10. januar 2001 - 17:27 #22
*S*
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester