お知らせ‎ > ‎

特異メソッドについて

2009/03/21 1:47 に SmalltalkUsers Admin が投稿   [ 2009/03/21 2:42 に更新しました ]
SmallTalk R4.1では、Rubyのようにインスタンスに対してオンデマンドにメソッドを追加できます。

dic := {#foo -> 1. #bar->2} as: Dictionary.

例えば辞書の値を文字列として得たいとしましょう。
通常であれば
(dic at: #foo) asString. "=> '1' "

とする必要があります。括弧が増えて、少し面倒ですね。
こうした書き方が頻発しているような場合、いっそ下記のようにして、特異メソッドを定義してしまうのも良いでしょう。
dic <++ 'stringAt: index ^(super at: index) asString'

これで、
dic stringAt: #foo. " => '1' "

と書くことができます。

Comments