Жоғары деңгейдегі хабарлама - Higher order message

A жоғары тапсырыс туралы хабарлама (ХОМ) компьютерде бағдарламалау тілі формасы болып табылады жоғары деңгейлі бағдарламалау аргумент ретінде басқа хабарламалары бар хабарламаларға мүмкіндік береді. Тұжырымдама енгізілді MacHack 2003[1][2] арқылы Марсель Вейхер және толығырақ түрінде 2005 жылы Марсель Вейхер ұсынған және Стефан Дукас.[3] Ілгектерді циклмен атамай-ақ жазуға болады, жоғары ретті хабарламаларды нүктесіз түрінде қарастыруға болады үнсіз бағдарламалау.

Мысалдар

Әдетте Smalltalk коды, HOM-ны қолданбай, 1000 жалақы алатын қызметкерлердің жиынтығын келесі кодпен алуға болады:

 жалақы := қызметкерлер таңдаңыз: [ :әрқайсысы | әрқайсысы еңбекақы: 1000 ]

Алайда, HOM-ны пайдалану арқылы оны келесі түрде көрсетуге болады:

 жалақы := қызметкерлер таңдаңыз еңбекақы: 1000.

Мұнда, таңдаңыз - бұл жоғары реттік хабарлама және еңбекақы: оның нәтижесіне емес, таңдалған хабарламаның өзіне шақырылатыны түсінікті. Smalltalk тілі бұл мүмкіндікті жүзеге асыру үшін өзгертілмеген. Оның орнына, таңдаңыз деген хабарлама қайтарады рифизациялайды The таңдаңыз жіберу, содан кейін түсіндіреді еңбекақы: хабар.

Келесі мысал - жіберілетін болашақ хабарламаны пайдалану Croquet жобасы:[4]

 (текше келешек:1000) addRotationAroundY:10.

Бұл мысалда келешек: хабары себеп болады addRotationARoundY: 1 секундтан кейін текше нысанына жіберілетін хабарлама.

Бала асырап алу

Анықтамалық енгізу Мақсат-С Objective-C-де оларға жіберілген хабарламаны түсінбейтін объектілер оны арнайы ілмек әдісімен жеткізетін қасиеттерді пайдаланады алға:. Жоғары деңгейдегі хабарламалар осы мүмкіндікті қолдайтын бірқатар тілдерде жүзеге асырылды Рубин және Smalltalk.[5]

ECMAScript Harmony's Proxies құжаттамасында Catchall проксиіне қосымша ретінде жоғары тапсырыс хабарламалары туралы айтылады.[6]

Басқа тілдердегі ұқсас ұғымдар

Бағдарламалау тілі Дж арасындағы айырмашылықты ажыратады етістіктер және үстеулер. Үстеу етістіктің қызметін түрлендіреді. Бұл кейінгі хабарларды (етістіктерді) өзгертетін жоғары ретті хабарламаларға (үстеулер) ұқсас. Жоғарыдағы Крокет мысалында addRotationAroundY:. хабарлама әлі де жіберіледі және оның қалыпты мағынасы бар, бірақ оны жеткізу өзгертілген болашақ: 1000 хабарлама, ол болашақта жіберіледі.

Әдебиеттер тізімі

  1. ^ MacHack HOM презентациясы
  2. ^ O'Reilly macdevcenter мақаласы
  3. ^ ProceedingDLS '05 Динамикалық тілдер бойынша 2005 жылғы симпозиум материалдары [1]
  4. ^ «Croquet жүйесіне шолу, 6 бет» (PDF). Архивтелген түпнұсқа (PDF) 2012-04-26. Алынған 2012-05-18.
  5. ^ [2], [3] Мұрағатталды 2012-02-03 Wayback Machine
  6. ^ [4]