Joqarı tártipli xabar
Kompyuter programmalastırıw tilindegi joqarı tártipli xabar (HOM) — bul argument retinde basqa xabarlardı qabıllaytuǵın xabarlarǵa múmkinshilik beretuǵın joqarı tártipli programmalastırıwdıń bir forması. Bul koncepciya 2003-jılı MacHack konferenciyasında Marsel Veyer tárepinen usınıldı[1][2] hám 2005-jılı Marsel Veyer menen Stefan Dyukas tárepinen tolıǵıraq formada kórsetildi. Cikllerdi qayta islenetuǵın toplamlarǵa at bermesten jazıwǵa boladı, joqarı tártipli xabarlardı noqatasız yamasa únsiz programmalastırıwdıń bir forması retinde qarawǵa boladı.
Mısallar
Ádettegi Smalltalk kodında, HOM-dı paydalanbastan, miynet haqısı 1000-ǵa teń bolǵan xızmetkerler toplamın alıw tómendegi kod arqalı ámelge asırıladı:
salaried := employees select: [ :each | each hasSalary: 1000 ]
Biraq, HOM-dı paydalanıp, onı tómendegishe ańlatıwǵa boladı:
salaried := employees select hasSalary: 1000.
Bul jerde select — joqarı tártipli xabar, al hasSalary: onıń nátiyjesine emes, al select xabarınıń ózine shaqırıladı dep túsiniledi. Bul ózgeshelikti ámelge asırıw ushın Smalltalk tili ózgertilmegen. Onıń ornına, select bul select jiberiwiniń ózin bildiretuǵın xabar qaytaradı, al ol keyin hasSalary: xabarın interpretaciyalaydı. Basqa bir mısal — Croquet Proektindegi keleshektegi xabar jiberiwlerdiń qollanılıwı:[3]
(cube future:1000) addRotationAroundY:10.
Bul mısalda, future: xabarı addRotationARoundY: xabarınıń cube obyektine 1 sekundtan keyin jiberiliwine sebep boladı.
Qabıl etiliwi
Objective-C tilindegi standart implementaciya Objective-C-degi bir ózgeshelikten paydalanadı: ózlerine jiberilgen xabardı túsinbeytuǵın obyektler onı báribir forward: dep atalatuǵın arnawlı ilmek metodı arqalı qabıllaydı. Joqarı tártipli xabar almasıw usı ózgeshelikke iye bolǵan bir qatar tillerde, sonıń ishinde Ruby hám Smalltalk-ta da ámelge asırılǵan[4].
ECMAScript Harmony-dıń Proksiler hújjetlemesinde joqarı tártipli xabarlar olardıń Bárin qamtıwshı Proksileri (Catchall Proxies) ushın qollanıw mısalı retinde arnawlı atap ótilgen[5].
Basqa tillerdegi uqsas koncepciyalar
J programmalastırıw tili feyiller menen ráwishlerdi ajıratadı. Ráwishler feyillerdiń islew principin ózgertedi. Bul joqarı tártipli xabarlardıń (ráwishler) ózinen keyingi xabarlardı (feyiller) ózgertiwine uqsaydı. Joqarıdaǵı Croquet mısalında, addRotationAroundY:. xabarı ele de jiberiledi hám óziniń ádettegi mánisine iye, biraq onıń jetkeriliwi future:1000 xabarı arqalı ózgertiledi, yaǵnıy ol keleshekte belgili bir waqıtta jiberiledi.
Derekler
- ↑ «MacHack HOM Presentation».
- ↑ «MacDevCenter.com: Higher-Order Messages in Cocoa» (12-noyabr 2004-jıl). 12-noyabr 2004-jılda túp nusqadan arxivlendi.
- ↑ «Croquet System Overview, page 6». 26-aprel 2012-jılda túp nusqadan arxivlendi. Qaraldı: 18-may 2012-jıl.
- ↑ «SqueakSource». www.squeaksource.com.
- ↑ «Harmony:proxies [ES Wiki]». 16-aprel 2014-jılda túp nusqadan arxivlendi. Qaraldı: 23-may 2013-jıl.