Кіріспе

Компьютерлік бағдарламалауда, жалпы функция — полиморфизмді іске асыру үшін анықталған функция.

Статикалық типтегі тілдерде

Статикалық типтегі тілдерде (мысалы, C++ және Java), «жалпы функциялар» термині компиляция уақытындағы полиморфизм (статикалық шақыру), атап айтқанда параметрлік полиморфизм механизмын білдіреді. Бұл типтік параметрлермен анықталған, компиляция уақытында типтік ақпаратпен шешілетін функциялар. Компилятор осы типтерді пайдаланып, функцияның жүктемесін тиісті түрде шешіп, қажетті нұсқаларын құрастырады.

Басқа тілдермен салыстыру

Жалпы функциялар шамамен Smalltalk терминдеріндегі әдістерге сәйкес келеді, бірақ Smalltalk-та қабылдаушы класы кодтың қай бөлігі шақырылатынын анықтайтын жалғыз фактор екені ерекшеленеді: аргументтердің түрлері немесе мәндері маңызсыз (бір жолдау). Көп жолдауды қолдайтын бағдарламалау тілінде жалпы функция шақырылғанда, әдіс жіберуі тек біреуі емес, барлық аргументтердің негізінде жүзеге асырылады. Жаңа нұсқалар да жалпы функцияларды ұсынды, бірақ тек бір жолдауды қолдады. JavaScript-те жалпы функция – бұл нақты бір түрге емес, әртүрлі түрдегі мәндермен жұмыс істей алатын функция. Бұл типтік параметрлерді пайдалану арқылы немесе қолданылатын мәннің түрін динамикалық түрде тексеру арқылы іске асырылады. JavaScript-те жалпы функцияларды қолданудың кең таралған мысалы – массивтер, жолдар немесе объектілер сияқты әртүрлі дерек түрлерімен жұмыс істей алатын, қайта пайдалануға болатын функцияларды жасау. JavaScript-тің динамикалық типтеу жүйесі оны жалпы функцияларды құруға өте ыңғайлы етеді, себебі мәндер қажет болған жағдайда әртүрлі түрлерге оңай түрлендіріледі немесе өзгертіледі.