상위 메시지
Higher order message컴퓨터 프로그래밍 언어의 High-order Message(HOM; 고차 메시지)는 다른 메시지를 인수로 사용하는 메시지를 허용하는 고차 프로그래밍의 한 형태입니다.이 개념은 Marcel Weiher에 의해 MacHack[1][2] 2003에서 소개되었으며 2005년 Marcel Weiher와 Stéphane [3]Ducasse에 의해 보다 완전한 형태로 제시되었습니다.루프는 루프 오버된 컬렉션에 이름을 붙이지 않고 쓸 수 있으며, 상위 메시지는 포인트프리 또는 암묵 프로그래밍의 형태로 볼 수 있습니다.
예
일반 Smalltalk 코드에서는 HOM을 사용하지 않고 다음 코드를 사용하여 급여 1000명의 직원 컬렉션을 얻을 수 있습니다.
월급쟁이 : = 직원 선택 : [ : 각 has salary : 1000 ]다만, HOM 를 사용하면, 다음과 같이 나타낼 수 있습니다.
월급쟁이 := 직원들. 선택한다. has Salary: 1000. 여기서,select상위 메시지입니다.hasSalary:는 결과가 아닌 선택 메시지 자체에 의해 호출되는 것으로 이해됩니다.이 기능을 구현하기 위해 Smalltalk 언어는 변경되지 않았습니다.대신,select를 증명하는 메시지를 반환한다.selectsend(전송)에 의해, 그 후, send(전송)의hasSalary:메세지.
또 다른 예로는 Croquet [4]프로젝트에서 향후 전송되는 메시지를 사용하는 방법이 있습니다.
(큐브 미래:1000) addRotationAroundY:10. 이 예에서는future:메시지가 원인이 되어addRotationARoundY:큐브 개체로 전송되는 메시지입니다.
도입
Objective-C의 레퍼런스 실장은 Objective-C에서 전송된 메시지를 이해하지 못하는 오브젝트는 여전히 특수한 후크 방식으로 전달된다는 특성을 활용합니다.forward:고차 메시징은 Ruby,[5] Smalltalk 등 이 기능을 공유하는 여러 언어로 구현되었습니다.
ECMAScript Harmony의 Proxies 문서에서는 Catchall Proxies [6]응용 프로그램으로 상위 메시지를 구체적으로 언급하고 있습니다.
다른 언어에서도 비슷한 개념
프로그래밍 언어 J는 동사와 부사를 구별한다.부사는 동사의 기능을 변화시킨다.이는 상위 메시지(부사)가 뒤에 오는 메시지(동사)를 수정하는 것과 유사합니다.위의 크로켓 예에서는addRotationAroundY:. 메시지는 여전히 발송되며 일반적인 의미를 가지지만 배달은 에 의해 변경됩니다.future:1000메시지는 미래 언젠가 보내질 것입니다.
레퍼런스
- ^ MacHack HOM 프레젠테이션
- ^ O'Reilly macdevcenter 기사
- ^ DLS '05년 동적 언어 심포지엄 진행 [1]
- ^ "Croquet System Overview, page 6" (PDF). Archived from the original (PDF) on 2012-04-26. Retrieved 2012-05-18.
- ^ http://www.squeaksource.com/LazyCollections.html , [2] Wayback Machine에서 2012-02-03 아카이브 완료
- ^ http://wiki.ecmascript.org/doku.php?id=harmony:proxies&s=proxy#higher-order_messages