Skip to main content

Hvad er en førsteklasses funktion?

First-klasses funktion er et udtryk, der kan anvendes i computerprogrammering og datalogi på et computerprogrammeringssprog, hvis dens behandling af funktioner overholder et sæt retningslinjer, selvom det fulde omfang og dybde af disse retningslinjer ikke formelt er aftalt.For at have et førsteklasses funktions computerprogrammeringssprog er den vigtigste funktion, der skal understøttes, muligheden for at videregive funktioner som argumenter til andre funktioner.En funktion skal også kunne tildeles en variabel, så den kan gemmes.Andre egenskaber, der bruges til at bestemme, hvad der udgør en førsteklasses funktion, inkluderer evnen til dynamisk at generere en funktion ved kørsel og sprogets evne til at have en funktion som en returværdi af en anden funktion.Sprog, der understøtter førsteklasses funktionsarkitektur, giver mulighed for et højt abstraktionsniveau og i nogle tilfælde giver også en mekanisme til dynamisk kodegenerering af kørsel.At videregive en funktion inden for et program gennem variabler er ikke nødvendigvis unik for sprog, der naturligt implementerer førsteklasses funktionsstøtte.Evnen til at videregive blokke af kode til funktioner eller til at returnere ikke-dynamisk kode fra en funktion kan let udføres på mange programmeringssprog gennem forskellige mekanismer.En af de strenge dele af definitionen af et førsteklasses funktionssprog er imidlertid, at håndteringen af funktioner som variabler skal udføres naturligt uden brug af metadata, såsom betingede definitioner og udenkode.Udtrykket funktion bruges også til at henvise til uafhængige kodeblokke, der kaldes på egen hånd, hvilket betyder, at de ikke inkluderer kodeblokke, der er kendt som metoder i objektorienterede programmeringssprog eller de blokke, der undertiden kaldes procedurer på andre sprog.

Når et sproger designet til at tillade førsteklasses funktionskode, nogle designmønstre kan implementeres mere direkte end på andre sprog.En funktion kan modtage en funktion som en variabel og derefter konstruere en ny funktion og returnere den nye funktion til opkaldskoden, så dette skaber en mekanisme til kørselstid oprettelse af programkode.Dette kan også gøre brugen af realtids-brugerindrettede funktioner mulige inden for sproget uden brug af processer såsom refleksion eller evaluering.

Nogle af de mest basale anvendelser til førsteklasses funktionsarkitektur inkluderer oprettelse af generiske funktioner, der let kangenanvendes og implementerer rekursive matematiske algoritmer, der er i stand til at selv modificere deres ligninger, når de skrider frem.En lignende, mere avanceret anvendelse til førsteklasses mekanismer er implementeringen af polymorfisme på sprog, hvor den ikke er specifikt implementeret.Dette kan tillade, at funktioner kaldes med den samme funktionssignatur, men udfører kode baseret på den kontekst, hvori den blev kaldt, undertiden ved at videregive en nøglefunktion til den polymorfe funktion.