2007-04-01から1ヶ月間の記事一覧

CLOS のパッケージを用いたメソッドコンフリクトへの対処を試みる

昨日のエントリーで shiro さんにコメントをいただいたのをうけて、さっそく CLOS のパッケージについて学んでみました。 On Lisp - パッケージ CLHS: Chapter 11 - Packages xyzzy Lisp Programming - Common Lisp 入門 - パッケージの基本的な使い方 これ…

トレイトにおける、メソッドコンフリクト時の対処のしかた

多重継承機構を利用する際の問題としてよく取りざたされる「メソッド名のコンフリクト(衝突)」ですが、Squeak Smalltalk のトレイト機構(Traits)では、同種のミックスイン機構の場合と異なり、その対処はユーザーに委ねられます。 たとえば、いずれもメ…

新規トレイト作成用のテンプレートをクラスブラウザに出させるための細工

「トレイト」は Squeak で 3.9 から組み込みになった Ruby のモジュールライクな多重継承機構(Traits。この場合、複数形?)や、そのエンティティの名前(trait)、および、オブジェクトとしてのそれ(Smalltalk なら当然!w)が属するクラス名(Trait)の…

Ruby の落とし穴:モジュールの特異メソッドは include 先クラスからはコールできない?

[ruby-talk:247201] Re: class を読みつつ、へぇ… Ruby には module_function なんて機能(インスタンスメソッドの特異メソッド化?)があるんだ…とか軽く驚きつつ、でもこれって include Foo した Bar からは呼べないのか…と不思議に思ったのでメモ。当初、…

繰り返しで最後(あるいは最初)だけ特別扱いする処理の書き方

[ruby-talk:246464] Last iteration condition おもしろそうなので、Enumerable#inject の、引数を省略したときに最初の要素をインジェクトする…というデフォルトの動作を悪用したトリッキーな方法を考えてみました。(←要素を数えて順番で判断したら負けだ…