Smalltalk-76 で Array|sum を定義する


http://home.netsurf.de/helge.horch/esug/ な実装の Smalltalk-76 でメッセージングの考え方をレクチャーするとは斬新な! すばらしすぐる。

Array#sumとか作れたら(1,2,3) sum.は6になって('1', '2', '3') sum.は'123'になりますねー、て出来たんやろうけど、メソッドの定義の仕方がわからんかった。ブラウザ右クリックしてもなんも出てけえへんし…

http://twitter.com/uokumura/status/1797407683


メソッドは、それこそ Array へのメッセージングで定義してもいいですし(st76a9.jar の中の /sources/bootstrap.utf.txt がいろいろと参考になります)、

Array understands: 'sum | i sum
	[self length = 0 ⇒ [⇑0].
	sum ← self•1.
	for% i from: (2 to: self length) do%
		[sum ← sum + (self•i)].
	⇑sum]'


ブラウザ(デスクトップの右クリック → Open Browser)で Array を選択したとき(メソッドは選択されてない状態)の下のコード枠に定義を記入(もしくはペースト)してから右クリック → Accept でも大丈夫です。


http://squab.no-ip.com:8000/st76arraysum.png


これで (1,2,3) sum や ('1','2','3') sum のポリモーフィズムが試せます。

(1,2,3) sum         "=> 6 "
('1','2','3') sum   "=> '123' "