Gå til innhold

function og procedure


Anbefalte innlegg

Skrevet (endret)

Hva er forskjellen mellom function og procedure? Hva skal de brukes til? Er det noen fordeler og ulemper med dem?

Endret av 86Fredrik
Videoannonse
Annonse
Skrevet

For å bevare oversikten, er det viktig å vurdere hvorvidt en kode skal plasseres i en funksjon eller sub; avhengig av om den skal returnere informasjon eller ikke.

En matematisk-formel, ala følgende, gir mest mening om den plasseres i en funksjon.

 

Public Function Hypotenus(a As Double, b As Double) As Double

Hypotenus = sqr(a^2 + b^2)

End Function

 

Mens en slik kode blir mest "korrekt" om den plasseres i en sub:

 

Public Sub Log(sText As String)

Open App.Path & "\Log.txt" For Append As #1
Print #1, sText
Close #1

End Sub

 

Ettersom den ikke trenger å returnere en variabel. Om du f.eks legger inn en "error-handler", forholder det seg derimot annerledes:

 

Public Function Log(sText As String) As Long

On Error GoTo Feil

Open App.Path & "\Log.txt" For Append As #1
Print #1, sText
Close #1

Log = 0 ' Ingen feil

Exit Function
Feil:
Log = -1 ' Eller du kan returnere Err

End Sub

 

Men du trenger absolutt ikke bruke funskjoner. Du kan uten problemer legge inn en "input" variabel og en "output" variabel:

 

Public Sub Log(sText As String, Ret As Long)

On Error GoTo Feil

Open App.Path & "\Log.txt" For Append As #1
Print #1, sText
Close #1

Ret = 0 ' Ingen feil

Exit Function
Feil:
Ret = -1 ' Eller du kan returnere Err

End Sub

 

Den eneste forskjellen er derfor at funksjoner returnerer variabler direkte, mens sub ikke gjør det. Du er ikke hindret av dette, og sub kan utmerket godt returnere informasjon, men du tjener deg selv ved å bruke funskjoner når det virker passende.

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...