読者です 読者をやめる 読者になる 読者になる

Code Aquarium

minazoko's blog -*- 水底のブログ -*-

(Racket) Class の External Name Control

Racket Lisp

RacketのClassシステムの説明にある Internal / External Names がピンと来なかったので、サンプルを書いてみました。
公式ドキュメントでは 比較対象にJavaのprotectedを例にあげていますが、むしろ C++ の friend に近いような気がします。

Racketのdefine-member-nameの例(gist)

generate-member-key はgensymで内部シンボルを作っています。define-member-name で束縛すると、束縛されたシンボルと同名のメソッドが外部から参照できなくなる仕組みです。