Skip to main content

Vad är en förstklassig funktion?

Första klassfunktionen är en term som kan tillämpas i datorprogrammering och datavetenskap på ett datorprogrammeringsspråk om dess behandling av funktioner följer en uppsättning riktlinjer, även om hela räckvidden och djupet i dessa riktlinjer inte formellt överenskommits.För att ha ett förstklassigt funktionsdatorprogrammeringsspråk är huvudfunktionen som måste stöds förmågan att skicka funktioner som argument till andra funktioner.En funktion måste också kunna tilldelas en variabel så att den kan lagras.Andra egenskaper som används för att bestämma vad som utgör en förstklassig funktion inkluderar förmågan att dynamiskt generera en funktion vid körning och språkets förmåga att ha en funktion som ett returvärde för en annan funktion.Språk som stöder förstklassig funktionsarkitektur möjliggör en hög abstraktionsnivå och ger också i vissa fall en mekanism för dynamisk kodgenerering.

När termen funktion används i löst definierad mening, begreppet begreppetAtt skicka en funktion inom ett program genom variabler är inte nödvändigtvis unikt för språk som naturligtvis implementerar förstklassig funktionsstöd.Möjligheten att överföra kodblock till funktioner, eller att returnera icke-dynamisk kod från en funktion, kan enkelt göras på många programmeringsspråk genom olika mekanismer.En av de strikta delarna av definitionen av ett förstklassigt funktionsspråk är emellertid att hanteringen av funktioner som variabler måste göras naturligt, utan att använda metadata som villkorade definier och utan att ringa en kompilator för att kompilera en bit avkoda.Termfunktionen används också för att hänvisa till oberoende kodblock som kallas på egen hand, vilket innebär att de inte inkluderar kodblocken som kallas metoder i objektorienterade programmeringsspråk eller blocken som ibland kallas procedurer på andra språk.

När ett språkär utformad för att tillåta förstklassig funktionskod, vissa designmönster kan implementeras mer direkt än på andra språk.En funktion kan ta emot en funktion som en variabel och sedan konstruera en ny funktion och returnera den nya funktionen till samtalskoden, så detta skapar en mekanism för att skapa programmet.Detta kan också möjliggöra användning av realtid användarinmatade funktioner inom språket utan användning av processer som reflektion eller utvärdering.

Några av de mest grundläggande användningarna för förstklassig funktionsarkitektur inkluderar att skapa generiska funktioner som enkelt kan kanåteranvändas och implementera rekursiva matematiska algoritmer som kan självmodifiera sina ekvationer när de fortskrider.En liknande, mer avancerad användning för förstklassiga mekanismer är implementeringen av polymorfism på språk där den inte specifikt implementeras.Detta kan göra det möjligt att anropas med samma funktionssignatur men kör kod baserat på det sammanhang där det kallades, ibland genom att överföra en nyckelfunktion till den polymorfa funktionen.