アラン・ケイも認めた!Ruby>>>>>Smalltalk at TECH
[2ch|▼Menu]
169:デフォルトの名無しさん
08/02/08 09:33:03
>>165
やっつけですが、Squeak Smalltalk で。

Object >> inc
  | sender index |
  sender := thisContext sender.
  index := (sender method at: sender pc - 2) \\ 16 + 1.
  ^sender tempAt: index put: (sender tempAt: index) + 1

| a b before after |
a:= 1. b := 2.
before := {a. b}.
a inc. b inc.
after := {a. b}.
^{before. after} "=> #(#(1 2) #(2 3)) "

170:デフォルトの名無しさん
08/02/08 14:09:59
>>169
参考になりました。
ああ、やっぱり、破壊的に代入ができないために
senderからたどる必要あるんですね。

171:デフォルトの名無しさん
08/02/08 14:47:43
>>170
そうですね。ちゃんとやるんなら、168 の言うとおりコンパイラに手を加えてインライン展開するのが
ベターだと思います。これは処理系も Smalltalk で組まれている Smalltalk ならではの解決方法かと。

172:デフォルトの名無しさん
08/02/20 18:26:04
st厨はstネタは自スレでやってもらえんかね。
まあそんな空気が読めるぐらいならstなんて
とっくに見切りつけてるだろうけどな。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5378日前に更新/73 KB
担当:undef