À¥¸,lz3r× É,//,ÄËÇÅ¯,¹ / §, ª©

µ4ltcxg3n0­×½SÎÖ´5±Ð¬        ©0¹ª©Á ©

1 &'$" 
 
2

#"&"'&#"
Smalltalk ではブロッククロージャとして渡す  



!& !.&)-(
#/'"

元々ここにあった物を持って行く  )-,+!*2' %"$01 &

3

µ`¨2Q¾E

こんな感じで、処理をどんどん投げていく 

会社っぽい気分上司が部下に仕事をどんどん投げる問題が起きたときは上司に報告してね4d}upw3
HN9U-(S|k ~Q:7Lecve`>¤Q-efofsuQpw3`¿ÙCL;]ecve`=-GCL-d}u3|QÆKLefofsuSÄ¼d}u<=^N-¿ÙCHpw3SÄ¼qsv<ÂB_^.
47:9;=5,?, ,@= >==98
47:9;=5,?, ,@= ;,70
47:9;=5,?, ,@= 0?08= .=498?08=
47:9;=5,?, ,@= 0?08= .=498!4<=080;

dr3{f3p`ª³CL+:>-64..6,<<.=498>==980A=08/<;,7047:60708=<.=498!4<=080;
D.=498>==98
D<>:0;.=498>==98>==98,>==9880@>==98A4=,>==98 ,//.=498!4<=080;=34<=34< ,//,>==98=34< <0=$4C0=34< <0=!9.,=498 =34< <0=&4<4-60=;>0Fj3oQCLltcxg3nNCL¾E

:>-64.?94/,.=498#0;19;70/.=498?08=0D$B<=07 0A4= F
:>-64.<=,=4.?94/7,48$=;482)*,;2>708=<D80@.=498>==98
ActionListener インタフェースを取り込むと actionPerfomed (何Fかが起きたら呼び出されるメソッド) を実装してねと言われるFだが、この二つが離れているため、どれが呼ばれるか分からなく5て、こういう構造は嫌だよねと言い出す人がいるなので、下のような書き方をするように

ÃÏj pµ`¾EV8<giuMTP7S;+,ÃÏj pPO`«E^SMTP>L+(Q:7L-j3oÊÍ<{b3puj pQP^AN`·E^×Ó<-AAQ6^
47:9;=5,?, ,@= >==98
47:9;=5,?, ,@= ;,70
47:9;=5,?, ,@= 0?08= .=498?08=
47:9;=5,?, ,@= 0?08= .=498!4<=080;

ここはなくなった:>-64..6,<<.=498>==980A=08/<;,70D
j3oQCLltcxg3nNCL¾CHV8<+.=498>==98
D<>:0;.=498>==98>==98,>==9880@>==98A4=,>==98 ,//.=498!4<=080;
80@.=498!4<=080;
どれが呼ばれるか分かるようにD
:>-64.?94/,.=498#0;19;70/.=498?08=0なったのでさっきよりはマシD
$B<=07 0A4= FF

=34< ,//,>==98=34< <0=$4C0
=34< <0=!9.,=498 =34< <0=&4<4-60=;>0F:>-64.<=,=4.?94/7,48$=;482)*,;2>708=<D
80@.=498>==98FF6º`ÒE^y! & S '# $`LX\8-giuI\+
6PHSº<ÌCHN=Q-AS­×ÊÍ`ª¡CLR-NÔÑCL:>-A_TWBQµ1j3oQCLltcxg3nNCL¾CL7^













E,>==98E%;,8<.;4:=.60,;,>==98&,6>096/0;@4=31,6<0,>==98.97:>=0)%;,8<.;4:=

80A=#>=66,>==98?,6>0:;48=$=;482
80A=#>=66,=

80A=#>=66%47089@:;48=$=;482

.;



16><3*
<0.98/<@,4=,>==98?,6>0=;>0
<0.98/<@,4=,>==98?,6>01,6<07

µNCLSÊÍ
k! & Q:7LT-j3oÊÍ<{b3puj pM6^{ch3mdr3{f3pS|k ~QY-µNCLSÊÍ<¶ÕB_L7^

! & #"%' #$%
E,'48/9@,>==98,&40@E,'48/9@$.30/>60/'48/9@80@,'48/9@6,-06.=498>==98
,>==98&,6>096/0;@4=31,6<0,>==98.97:>=0),'48/9@.98=;9660;.69<0*,&40@.=498>==98&40@79/06,>==98,&40@6,-06A4=,<%0A=,6696/,<97:9<0/%0A=,'48/9@.97:9808=,&40@,'48/9@9:0880A=08=

! & )&'"



E,'48/9@,>==98E,'48/9@$.30/>60/'48/9@80@,'48/9@6,-06.=498>==98
,>==98 >8>==98"9/06?,6>01,6<0?4<>,6A4=,<%0A=,6696/,>==98,.=498),'48/9@.98=;9660;.69<0*,'48/9@.97:9808=,>==98.;0,=0>==98&40@,'48/9@9:088
0A=08=


8

Prolog のような論理プログラミング風に示すと
ØN²
_N

 

 



2 #S[(,.$-&
*6'.0*6.

違う方法で頑張って実行してみる(エラー時に実行される)
VN

.!"U^1X750
.!"]1U^8R*+1O0 1MW8Q"

A>:?G>:(/#4E@B9<=FI8Q"3"/`^CH;GDI;U^L1Z%
JKTP`^1`\U^.Y)  ¦TAAWMZKHSME<-6NA_I@Z]P@_UP]P7G_`:7M=^;C]a-6PHSZ^AN<£aI]-ZKLJ[8I7.
YCY;ÈÀ¢PAN<°DHP]U-E?Q»]FL>IB7.

9

µ

実行結果は全て一緒

#"&"'&#"E,%470E,%470%47089@%;,8<.;4:=

80A=#>=66,%470:;48=$=;482
.;

16><3


E,69<>;0,%470E,69<>;0)%;,8<.;4:=
80A=#>=66,%470:;48=$=;482
.;

16><3* pecJh_L]_,%470%47089@,69<>;0?,6>0
_|uR]H

E,69<>;0,%470E,69<>;0)=470E%;,8<.;4:=

80A=#>=66=470:;48=$=;482.;
16><3* pecJh_LWL_,%470%47089@,69<>;0?,6>0,%470
_QT_|uR]H








E,69<>;0,98=48>,=498,%470E,69<>;0)=470.98=48>,=498E.98=48>,=498?,6>0=470:;48=$=;482*,98=48>,=498)<=;482E%;,8<.;4:=

80A=#>=66<=;482

.;



16><3*,%470%47089@,69<>;0?,6>0,%470?,6>0,98=48>,=498
Vs_QT_|uR]HR]H

R]H

10

µ
#"&"'&#"










E,&,6>0,&,6>096/0;E,&,6>0 1,.=9;4,6,&,6>096/0;&,6>096/0;80@ _zR]agd`bf_x]H
,&,6>096/0;?,6>0,&,6>0 
_R]H
,&,6>0,&,6>096/0;?,6>0  _}\~RH%;,8<.;4:=
80A=#>=66,&,6>0:;48=$=;482
80A=#>=66,=
80A=#>=66%47089@:;48=$=;482
.;
16><3








E,&,6>0,69<>;0,&,6>096/0;E,&,6>0 1,.=9;4,6,69<>;0)?,6>0E
%;,8<.;4:=

80A=#>=66?,6>0:;48=$=;482

80A=#>=66,=

80A=#>=66%47089@:;48=$=;482.;

16><3*,&,6>096/0;&,6>096/0;80@,&,6>096/0;.97:>=0,69<>;0  KWSZMnQSVNGOZ_|uQTYH
,&,6>096/0;?,6>0,&,6>0










E,&,6>0,98=48>,=498,69<>;0,&,6>096/0;E,&,6>0 1,.=9;4,6,98=48>,=498))<=;482E
%;,8<.;4:=

80A=#>=66<=;482
80A=#>=66,=80A=#>=66%47089@:;48=$=;482
.;

16><3*
B9>;<061*,69<>;0)?,6>0.98=48>,=498E.98=48>,=498?,6>0?,6>0:;48=$=;482*,&,6>096/0;&,6>096/0;80@,&,6>096/0;@4=3,98=48>,=498.97:>=0,69<>;0  KWSZMnQSVNGOZsVlXOZ_|uQTYH
,&,6>096/0;?,6>0,&,6>011

µ
#"&"'&#"cabE,69<>;0,&,6>0E,69<>;0)8EE,E84<8=020;89=9;)8802,=4?0*41%;>0)+<0610;;9;-99*, =98/9)4E,,4* QTL]H,B9>;<061*,&,6>0,69<>;0?,6>0 o_tyR]H%;,8<.;4:=

80A=#>=66,&,6>0:;48=$=;482

80A=#>=66,=

80A=#>=66%47089@:;48=$=;482
.;

16><3 _{vVrXfikebjhfXN~RH
+,&,6>0B9>;<061 _mR]H c b aE,98=48>,=498,69<>;0E,98=48>,=498)?,6>0E
%;,8<.;4:=
80A=#>=66?,6>0:;48=$=;482
80A=#>=66,=

80A=#>=66%47089@:;48=$=;482



.;



16><3 _{vVrXfikebjhfXN~RH
+?,6>0B9>;<061_mR]H*
これが実行されるので、最後の self halt は実行されない,69<>;0)8.98=48>,=498E(別のメソッドではないので、呼び出し元のメソッドに処理が返る)E,E84<8=020;89=9;)8802,=4?0*41%;>0)+<0610;;9;-99*, =98/9)4E,,4* QTL]H.98=48>,=498?,6>0,*,69<>;0?,6>0 ?,6>0,98=48>,=498 o_tyR]_sU|uR]H
<0613,6=OO[|uP^]OV[WLI

12µ®¾ #"&"'&#"%%"&* E,69<>;0,&,6>0E,69<>;0)8EE,E84<8=020;89=9;)8802,=4?0*41%;>0)+<0610;;9;-99*,84<(0;941%;>0) *41,6<0),69<>;0?,6>08  8* wqQTL]H,B9>;<061*,&,6>0,69<>;0?,6>0%;,8<.;4:=
80A=#>=66,&,6>0:;48=$=;482

80A=#>=66,=

80A=#>=66%47089@:;48=$=;482
.;

16><3+,&,6>0B9>;<061

E,98=48>,=498,69<>;0E,98=48>,=498)?,6>0E%;,8<.;4:=
80A=#>=66?,6>0:;48=$=;482
80A=#>=66,=

80A=#>=66%47089@:;48=$=;482

.;



16><3

+?,6>0B9>;<061*,69<>;0)8.98=48>,=498E84<8=020;89=9;)8802,=4?0*41%;>0)+<0610;;9;-99*
84<(0;9
41%;>0).98=48>,=498?,6>0 *41,6<0),69<>;0?,6>08  ?,6>0),E.98=48>,=498?,6>0,8** <0613,6=
OOM|uP^]OV[WLI*,69<>;0?,6>0 ?,6>0,98=48>,=498 o_tyR]_sU|uR]H
<0613,6=
OOM|uP^]OV[WLIwqUsQTL]H

これを継続で渡しているので、どんどんと溜まっている状態
詳しくは、 KSU, KSU-High, High, Class page4, page43 を参照 13

実行過程はこの様になっているµ®¾
1,.=9;4,6-B#$98=48>,=498#,<<482$=B60E.98 E.98 ), EE.98 E.98 ), EE.98 E.98 ), EE.98E.98),EE.98E.98),EE.98E.98),EE.98E.98),EE.98E.98),EE.98E.98),EE.98E.98),EE.98 E.98 )?,6>0E%;,8<.;4:=80A=#>=66?,6>0:;48=$=;482
80A=#>=66,=80A=#>=66%47089@:;48=$=;482
.;
16><3+?,6>0B9>;<061*.98 ?,6>0, *.98?,6>0,*.98?,6>0,*.98?,6>0,*.98?,6>0,*.98?,6>0,*.98?,6>0,*.98?,6>0, *.98 ?,6>0,  *.98 ?,6>0,  *.98 ?,6>0

14