instanceof
æäœãªã©ïŒã䜿çšãããšãããããæãããæªç©ã ãšäž»åŒµããŸãã
switch
幌ãåäŸãæãããããã®ã®ã
äžè¬çã«èšã£ãŠã
instanceof
ãšãã®é¡äŒŒç©ã®äœ¿çšã¯ãéåžž ãOOPèšèšã¹ãã«ãäžååãªçµæã§ãããšèªã
instanceof
ã å€æ æ§ã¯åãã§ãã¯ãããåªããŠããŸãã ã³ãŒããããæè»ã§ç解ããããããŸãã ãã ããããªã¢ãŒãã£ãºã ã絶察ã«äœ¿çšã§ããªãäžè¬çãªã±ãŒã¹ãå°ãªããšã1ã€ãããŸãã ããã«ããã®ã±ãŒã¹ã¯éåžžã«åºç¯ã§ããããããã§ã«ãã¿ãŒã³ãšèŠãªãããšãã§ããŸãã æ£çŽãªãšãããããªã¢ãŒãã£ãºã ã䜿çšããããšæããŸãã ãããŠãããªãã¯ãããè¡ãæ¹æ³ãç¥ã£ãŠãããªã-ç§ã«æããŠãã ããã ããããç§ã¯ãããå¯èœã ãšã¯æããªãã å°ãªããšãJavaãC ++ãªã©ã®éçèšèªã§ã¯æ£ç¢ºã§ã¯ãããŸããã
å€åã®å®çŸ©
OOPã®çšèªã«æ £ããŠããªãå Žåã¯ãäœãåé¡ãªã®ãã説æããŸãã å€åã¯ãé 延ãã€ã³ãã£ã³ã°ã®æŠå¿µã®éå¿çãªæå®ã§ãã é 延ãã€ã³ãã£ã³ã°ã¯ãããã°ã©ã ãéå§ãããŸã§ç¹å®ã®ã¡ãœãããåŒã³åºããã©ããã®æ±ºå®ã延æããããšããç¶æ³ã«å¯Ÿããä»®ã®æå®ã§ãïŒæ·±ãæãäžãããšããã«ãã¿ãŒã³ãèŠã€ãããŸãïŒã ãããã£ãŠããªããžã§ã¯ããšã¡ãã»ãŒãžïŒã€ãŸãã¡ãœããïŒã®å¯Ÿå¿ã®ç¢ºèªã¯ãã¢ããªã±ãŒã·ã§ã³äžã«ãã§ã«å®è¡ãããŸãã
C ++ãJavaãOCamlãªã©ã®ããã©ãŒãã³ã¹æåããã°ã©ãã³ã°èšèªã§ã¯ãã¡ãœããã«çªå·ãå²ãåœãŠããããã®åŸãåã¯ã©ã¹ã«å¯ŸããŠãã®ã¡ãœããã®ããŒãã«ãäœæãããŸãã å®è¡æã«æ€çŽ¢ãå®è¡ãããŸãã æè»æ§ãšãã€ãããºã ã奜ãèšèªã§ã¯ãæ€çŽ¢ã¯æ°å€éã§ã¯ãªããããã·ã¥ãããã¡ãœããåéã§å®è¡ãããŸãã ãã以å€ã®å Žåãããã2ã€ã®ã¢ãããŒãã¯ã»ãŒåãã§ãã
ä»®æ³ã¡ãœããã ãã§ã¯ããªã¢ãŒãã£ãºã ã¯çæãããŸããã ã¯ã©ã¹ã«è€æ°ã®ãµãã¯ã©ã¹ãããå Žåã«ã®ã¿æ©èœããŸãã ããã«ããããããç¬èªã®ç¹å¥ãªããŒãžã§ã³ã®ããªã¢ãŒãã£ãã¯ã¡ãœãããå®è£ ããŠããŸãã æç§æžã®æãäžè¬çãªäŸã§ã¯ãããã¯åç©åãšã®é¡æšã«ãã£ãŠèª¬æããããã¹ãŠã®åç©ã¯ã¡ãã»ãŒãžãç°ãªãæ¹æ³ã§åŠçããŸãã ïŒæç§æžã¯å®éã«åãã€ããŠããŸããããã¹ãŠã®åãã¯ããªã䌌ãŠããŸãããããã¯ãã ã®å€§ããã§ããç§ã®è¬èãªæèŠã§ã¯ããã¡ããã§ãã ïŒ
ã¢ã¯ã·ã§ã³ã®ããªã¢ãŒãã£ãºã
äŸãšããŠãã€ã³ã¿ãã¥ãŒã§ããèŠãããæ°åŒãèšç®ãããšããå€å žçãªåé¡ãèŠãŠã¿ãŸãããã ã¢ããŸã³ã®Ron Braunsteinã«ãã£ãŠæåã«äœ¿çšãããŸããïŒç§ã®ç¥ãéãïŒã ã¿ã¹ã¯ã¯éåžžã«è€éã§ãããå€ãã®éèŠãªã¹ãã«ã®ææã確èªã§ããŸãã ãã®OOPèšèšãååž°ããã€ããªããªãŒãããªã¢ãŒãã£ãºã ãšåçåä»ããããã³ããã°ã©ãã³ã°ã®äžè¬çãªèœåãããã«ïŒçªç¶ã¿ã¹ã¯ãè€éã«ãããå ŽåïŒæ§æ解æã®çè«ãããã
ãããã£ãŠããã®ã¿ã¹ã¯ãæ€èšãããšãåè£è ã¯ããæç¹ã§ãã+ããã-ããã*ããã/ããªã©ã®ãã€ããªæŒç®ã®ã¿ã䜿çšãããšãç®è¡åŒããã€ããªããªãŒãšããŠè¡šçŸã§ããããšã«æ°ä»ããŸãã ããªãŒã®èã¯ãã¹ãŠæ°åã«ãªããäžéããŒãã¯ãã¹ãŠæäœã«ãªããŸãã åŒã¯ãããªãŒãèµ°æ»ããããšã§èšç®ãããŸãã ç³è«è ãåç¬ã§ãã®ãããªæ±ºå®ã«è³ãããšãã§ããªãå Žåãããªãã¯åŸ®åŠã«ç€ºåããããšãã§ããŸãã ãŸãã¯ãç©äºãæ¬åœã«æªãå Žåã¯ãé¡ã«ãããèšãã 確ãã«ããã®åŸã§ããã¿ã¹ã¯ã¯ãŸã èå³æ·±ããŸãŸã§ãã
ååã¯ãäžéšã®äººã ïŒååã¯ç§ãšäžç·ã«å¢ã«æã¡ãŸãããã€ãã·ã£ã«ã¯ãŠã£ãªãŒã«ã€ã¹ïŒã¯ãèªåãéçºè ãšAmazonã§ä»äºãããã人ã®ããã®èŠä»¶ãšèŠãªããŠããŸãããå®éã«ã¯éåžžã«è€éã§ãã ããã§ã®è³ªåã¯ãã2 +ïŒ2ïŒããªã©ã®ç®è¡åŒãå«ãæååããåŒããªãŒã«é²ãæ¹æ³ã§ãã ãããŠããã¯æ·±å»ãªåé¡ã§ãã
åé¡ã®åŸåã«èå³ããããŸããäžç·ã«è§£æ±ºããããŒãããŒãæååãããªãŒã«å€æãã責任ããããšããŸãïŒãŠã£ãªãŒãšåŒã³ãŸãïŒã WillyãããªãŒãæ§ç¯ããã¯ã©ã¹ã決å®ããå¿ èŠããããŸãã ä»»æã®èšèªãéžæã§ããŸãã äž»ãªããšã¯ããŠã£ãªãŒãã¢ã»ã³ãã©ãŒãåªå ããå¯èœæ§ããããããå¿ããªãã§ãã ããã ããã«ãã¢ã»ã³ãã©ã¯ããã»ããµã«ãã£ãŠé·ãéå»æ¢ãããŸããã æ°åãæªãå Žåã¯ããã¡ããã
ããªãã¯ãã®ã¹ããŒãžãäœåã®äž»é¡ãéªéãããã«é©ãã§ãããã
ç§ã¯ãã§ã«æ£ããçããæ»ãããŠããããã§ããããœãªã¥ãŒã·ã§ã³ã®è©äŸ¡ã¯æ¬¡ã®ããã«èŠããŸãã æšæºçãªæªã解決çã¯ã
switch
ãŸãã¯
case
ã䜿çšãã
switch
ïŒææªã®
case
ãå€ãè¯ãã«ã¹ã±ãŒã
if
ïŒã ãããã«æ¹åããããœãªã¥ãŒã·ã§ã³ã§ã¯ãé¢æ°ãã€ã³ã¿ãŒã®ããŒãã«ã䜿çšããŸãã ãããŠæåŸã«ãããããæè¯ã®ãœãªã¥ãŒã·ã§ã³ã¯ããªã¢ãŒãã£ãºã ãé©çšããã§ãããã èªç±ã«ãããã®ãããããå®è£ ããŠã¿ãŠãã ããã ãå±ãããŸãïŒ
ç®èãªããšã«ïŒåŸã§èª¬æããŸãïŒãå€æ æ§ãåãããœãªã¥ãŒã·ã§ã³ã¯æ¡åŒµå¯èœãªã·ã¹ãã ã«æé©ã§ãã ç¹ã«500ã±ãŒã¹ãããªãGiant Switch Operatorã«ã±ãŒã¹ãè¿œå ããããšãªãããã¹ãŠãåã³ã³ãã€ã«ããå¿ èŠãªããæ°ããé¢æ°ãè¿œå ããå Žåã¯ãããªã¢ãŒãã£ãºã ã䜿çšããã ãã§ãã
ããªã¢ãŒãã£ãºã ã«æ¬æãè¡šããŠ3åã®ããªã¢ãŒãã£ãã¯ãªæ声
ãããã£ãŠãå€åã¯ãäœããã®åœ¢ã§ããããæçšãšæãããã ãããããæãæåããã¢ããªã±ãŒã·ã§ã³ã¯ãå€æ æ§å°å·æŒç®åã§ãã JavaãPythonãRubyããŸãã¯ãã®ä»ã®ãå®éã®ããªããžã§ã¯ãæåèšèªã§ããã°ã©ãã³ã°ããå Žåãããããåœç¶ã®ããšãšèããŸãã ãªããžã§ã¯ãã«èªåèªèº«ãå°å·ããããã«äŸé Œãããšã圌ã¯ãããå®è¡ããŸãã åãªããžã§ã¯ãã¯ããã®å éšç¶æ ã«ã€ããŠç¥ãå¿ èŠãããéããèªèº«ã«ã€ããŠå ±åããŸãã ããã¯ããããã°ããã¬ãŒã¹ããã®ã³ã°ãããã«ã¯ããã¥ã¡ã³ãåã«éåžžã«åœ¹ç«ã¡ãŸãã
C ++ãPerlãªã©ã®OOPèšèªã§ã1978幎ã®Subaru Legacyã«2500ãã«ã®ãã£ã¹ã¯ãã¢ã®ããã«ãã¹ãŠã®ãªããžã§ã¯ãæåæ§ããã蟌ãŸãããåœé ãããåœç©ã䜿çšããå Žåããããããããã¬ãŒã«æµžãããŸãã ãŸãã¯
Data::Dumper
'eã ãŸãã¯ãã®ãããªäœãã äžè¬çã«ãããªããåžããŸãïŒ
ïŒä¿®èŸçãªè³ªåïŒC ++ãŸãã¯Perlãéžæããçç±ã¯äœã§ããïŒãããã¯äžçã§æãã²ã©ã2ã€ã®èšèªã§ãïŒPascalãŸãã¯Cobolã䜿çšããŠãåãæåãåããããšãã§ããŸãããæããã§ã¯ãããŸãããïŒïŒ
ãšããã§ãæè¿ç§ãOCamlã«ã€ããŠæžããŠããªãäž»ãªçç±ã¯ãããªã¢ãŒãã£ãã¯
print
ã§ãã ç§ã¯ãŸã å®å šã«ã¯ç解ããŠããŸããããééããªãThe Most Insane Languages Designers Motivesã®ãªã¹ãã«èŒã£ãŠããçç±ã«ãããOCamlã«ã¯ããªã¢ãŒãã£ãã¯
print
ããããŸããã ãããã£ãŠããããã°ã®ããã«ã³ã³ãœãŒã«ã«ä»»æã®ãªããžã§ã¯ããåºåããããšã¯ã§ããŸããã ç§ã¯ãC ++ãããåªããäŒèª¬çãªããã©ãŒãã³ã¹ãéæããããã«å¿ èŠã ã£ããšä¿¡ããŠããŸãã ä»ã®çç±ã¯ãŠãŒã¶ããªãã£ãžã®æãããin蟱ã ããã§ãã ãŸãããããã圌ãã¯ããã°ã©ã ãæéã«æ»ãããšãã§ãããããã¬ãæã£ãŠããŸãã ééããªãè€æ°å圹ç«ã€ã§ãããã
ã ãããç§ãã¡ã¯çå€åã倧奜ãã§ãã ããã¯ããã€ã¯ã管çã®ä»£æ¿æ段ã§ãã ããªãã¯ãªããžã§ã¯ãã«ãããããæ¹æ³ãèšããã«äœããããããã«é Œã¿ã圌ãã¯çŽ çŽã«åŸãã ã¹ããã³ã°ãããã®åç»ããªã³ã©ã€ã³ã§èŠãŠäžæ¥ãéããã ããããããã®æããªãªããžã§ã¯ãïŒ åœŒããæããªãããšã¯äžå¯èœã§ãïŒ
ãããããã¹ãŠã®äŸ¡å€ã®ããããŒããŒãšåæ§ã«ãããªã¢ãŒãã£ãºã ã«ã¯ããŒã¯ãµã€ãããããŸãã ãã¡ãããã¢ããã³ã»ã¹ã«ã€ãŠã©ãŒã«ãŒã»ã©æãã¯ãããŸããããããã§ããªãã
å€åã®ãã©ããã¯ã¹
ããªã¢ãŒãã£ãºã ã®äœ¿çšã«ã¯ããã£ãã«å£é ã§è©±ãããããšã¯ãããŸããããéåžžã«éèŠãªæ¡ä»¶ããããŸããå°æ¥ãã³ãŒããå€æŽã§ããã¯ãã§ãã å°ãªããšããJavaãC ++ãªã©ã®éçã«åä»ããããèšèªã§ã¯ãããªã¢ãŒãã£ãã¯ã¡ãœãããè¿œå ããå Žåããã®ã¡ãœãããå®è£ ãããã¹ãŠã®ã¯ã©ã¹ãåã³ã³ãã€ã«ããå¿ èŠããããŸãã ãããŠãããã¯é çªã«ãããªãã圌ãã®ãœãŒã¹ã³ãŒãã«ã¢ã¯ã»ã¹ããå¿ èŠãããããšãæå³ããŸãã ãŸãããããå€æŽããæ©èœã
ãããå®è¡äžå¯èœãªç¹å®ã®ã¯ã©ã¹ã®ã·ã¹ãã ãããããæ¡åŒµå¯èœãªã·ã¹ãã ããããŸãã
ãŠãŒã¶ãŒãç¬èªã®ã³ãŒããè¿œå ã§ããä»®æ³ã·ã¹ãã ãèšèšããŠãããšããŸãã ããã¯ãäžæ£ã¢ã¯ã»ã¹ã«å¯Ÿããä¿è·ãã¹ããªãŒãã³ã°ã»ãã¥ãªãã£ã®ç¢ºä¿ãªã©ãããŸããŸãªçç±ã§ç°¡åãªäœæ¥ã§ã¯ãããŸããã ãããããã®ãããªã·ã¹ãã ã¯ååšããŸãïŒ ããšãã°ããã¬ãŒã€ãŒãå ã®ãœãŒã¹ã³ãŒãã«ã¢ã¯ã»ã¹ããã«å€æŽãå ããããšãã§ãããªã³ã©ã€ã³ã²ãŒã ããããŸãã å®éãã»ãšãã©ã®ãªã³ã©ã€ã³ãã«ããã¬ã€ã€ãŒã²ãŒã ã¯ãã®æ¹åã«åãã£ãŠããŸããäŒæ¥ã®çµå¶é£ã¯ããŠãŒã¶ãŒãèªåã§åªããã³ã³ãã³ããäœæã§ããããšããããŠäœæããããšãèªèããŠããŸãã ãã®ãããã²ãŒã ã¯APIãéãããã¬ã€ã€ãŒãç¬èªã®ã¢ã³ã¹ã¿ãŒãåªæãªã©ãäœæããŠããã°ã©ã ãæ¡åŒµã§ããããã«ããŸãã
WebãµãŒãã¹ã¯ãªã³ã©ã€ã³ã²ãŒã ãšåã圹å²ãæãããŠãããšããããšãããããŸãã
ãã®ãããªæ¡åŒµå¯èœãªã·ã¹ãã ãäœæãããã³ã«ãããã«3åã®äœæ¥ãå¿ èŠã«ãªããŸãã å éšAPIãšã¯ã©ã¹ãèšèšããŠããšã³ããŠãŒã¶ãŒãå€æŽã§ããããã«ããŸãã
è¯ãäŸãJava Swingã§ãã æ¡åŒµå¯èœãªåã·ã¹ãã ã«ã¯ãçºæè ã®é説ããããŸãã ãã®ãã©ããã¯ã¹ã«ã€ããŠã¯ãä»ã®ã©ããã§è©³ããèªãããšãã§ããŸããæ¬è³ªã«ã€ããŠã®ã¿ã話ããŸãããŠãŒã¶ãŒãã©ã®ãããªå€æŽãå ãããããäºåã«äºæž¬ããããšã¯ã§ããŸããã ããªãã¯äœã§ãã§ããŸã-ã³ãŒãã®åè¡ãåå¥ã®ä»®æ³é¢æ°ãšããŠå€éšã«å ¬éããããšãã§ããŸã-ãããããŠãŒã¶ãŒã¯å¿ ç¶çã«èªåãæããã®ã«ééããŸãããä¿®æ£ã§ããŸããã ããã¯æ¬åœã®æ²åã§ã-ãšã¬ã¬ã³ããªè§£æ±ºçã¯ãããŸããã Swingã¯ãå€ãã®ããã¯ãæäŸããããšã§æŠãããšããŠããŸãã ããããããã«ãããAPIãéåžžã«é¢åã§åŠç¿ãã«ãããªããŸãã
åé¡ã®æ¬è³ª
äŒè©±ãããå ·äœçã«ããããã«ããªã³ã©ã€ã³ã²ãŒã ã®äŸã«æ»ããŸãããã ã¹ãã«ãã¢ã³ã¹ã¿ãŒãããã³ãã®ä»ã®ã²ãŒã ãªããžã§ã¯ããäœæããã³ç®¡çããããã®ãã¹ãŠã®APIããã³ã¯ã©ã¹ãå®å šã«èšèšããã³å ¬éãããšããŸãã ã¢ã³ã¹ã¿ãŒã®å€§èŠæš¡ãªåºå°ããããšããŸãã ãã£ãŠã¿ããšæ³åã§ãããšæããŸãã
ãã¬ã€ã€ãŒã®äžäººãEvaluation Elfãšããååã®å°ããªããããäœããããšæã£ããšããŸãã ãã¡ãããããã¯éåžžã«æéã®ãããäŸã§ãåæ¢ã®åé¡ã蚌æããã®ãšåãããã«æ©èœããŸãããå®éã®ç掻ã§ã¯åæ§ã®ç¶æ³ãéåžžã«å¯èœã§ãã
è©äŸ¡Elfã®äººçã®å¯äžã®ç®çã¯ãä»ã®ã¢ã³ã¹ã¿ãŒã奜ããã©ãããçºè¡šããããšã§ãã 圌ã¯ããªãã®è©ã®äžã«åº§ã£ãŠããããªãŒã¯ãšäŒããã³ã«ã圌ã¯è¡ã«é£¢ããå«ã³å£°ãäžããŸãã Aaaaaaaa !!!âïŒãšããã§ããããã¯ç§ãC ++ã«ã€ããŠæããææ ãã®ãã®ã§ãïŒ
ãã®åé¡ã®å€æ çãªè§£æ±ºçã¯ç°¡åã§ãã150äœã®ã¢ã³ã¹ã¿ãŒãç¹°ãè¿ãåŠçãã
()
ã
()
ã¡ãœãããè¿œå ããŸãã
å°ç ããã¯ã°ãããŠããããã«èãããŸãã ããããããã¯æ¬åœã«å€æ çãªã¢ãããŒãã§ã¯ãããŸãããïŒ é¡äŒŒã®ãªããžã§ã¯ãïŒãã®å Žåã¯ã¢ã³ã¹ã¿ãŒïŒã®ã°ã«ãŒãããããããããã¹ãŠãåãç¶æ³ã«å¯ŸããŠç°ãªãæ¹æ³ã§åå¿ããå¿ èŠãããå Žåãä»®æ³ã¡ãœããããããã«è¿œå ããç°ãªããªããžã§ã¯ãã«å¯ŸããŠç°ãªãæ¹æ³ã§å®è£ ããŸãã ããïŒ
æããã«ããã®ã¢ãããŒãã¯ç§ãã¡ã®ã±ãŒã¹ã§ã¯æ©èœãããåäœããå¯èœæ§ããããŸãïŒãããŠããã®å°ããªãšã«ããæžãããŠãŒã¶ãŒã¯ãœãŒã¹ã³ãŒãã«ã¢ã¯ã»ã¹ã§ããªããããåäœããªãå Žåã§ãïŒã圌ã¯ééããªãBad Designã®å³ãæã£ãŠããŸãã ãã¡ãããã²ãŒã å ã®ãã¹ãŠã®ã¢ã³ã¹ã¿ãŒã«ãã®ãããªç¹å®ã®ã¡ãœãããè¿œå ããçç±ã¯ãããŸããã Value Elfãèäœæš©ã䟵害ããŠãããåé€ããå¿ èŠãããããšãåŸã§æããã«ãªã£ãå Žåã¯ã©ããªããŸããïŒ 150ã®ã¯ã©ã¹ãã¹ãŠãããã®ã¡ãœãããåé€ããŠããã¹ãŠãå ã®ç¶æ ã«æ»ãå¿ èŠããããŸãã
ç§ã®ç¥ãéãïŒãããŠãç§ã¯è¯ããã¶ã€ããŒã®æ èªãè£ ãããã§ã¯ãªããæ£ããçããèŠã€ãããã ãã§ãïŒãæ£ãã解決çã¯åçãªå決å®ã§ãã ã³ãŒãã¯æ¬¡ã®ããã«ãªããŸãã
public boolean ( mon) { if (mon instanceof ) { return false; } if (mon instanceof ) { return true; } ... < 150 > }
ãã¡ãããOOPããªãŒã¯ã§ããããšãå€æããEvaluation Elfçšã«150åã®ãã«ããŒã¯ã©ã¹ãäœæã§ããŸãïŒåã¢ã³ã¹ã¿ãŒã«1ã€ïŒã ããã¯ãåé¡ã®æ ¹æ¬ã解決ãããã®ã§ã¯ãããŸããããªããªãããã®æ¬è³ªã¯ãç°ãªãåäœãçä¿¡åŽã§ã¯ãªãçºä¿¡è ã«é©çšããããšããäºå®ã«ããããã§ãã 圌女ã®ãã®ã§ãã
äžéšã®é«æ°Žæºèšèªã§ã¯ãåé¡ã¯ããå°ããšã¬ã¬ã³ãã«è§£æ±ºãããŸãïŒç§ã¯åŒ·èª¿ããŸã-ã»ãã®å°ãã ãã§ãïŒã ããšãã°ãRubyã§ã¯ãä»ã®ã¯ã©ã¹ãžã®ã¡ãœããã®è¿œå ããµããŒããããŠããŸãã ãããŠãã©ã€ãã©ãªã®ãã®ã§ããã ãŸãããœãŒã¹ã³ãŒãããªãå Žåã§ãã ããšãã°ãè©äŸ¡Elfãã¡ã€ã«ã«æ¬¡ã®ã³ãŒããé 眮ã§ããŸãã
class def ; return false; end end class def ; return false; end end class def ; return true; end end ...
Rubyã¯ããªã¹ããããŠãããã¹ãŠã®ã¯ã©ã¹ããŸã ããŒããããŠããªãå Žåã¯ããŒãããããããã«ã¡ãœãããè¿œå ããŸãã ããã¯äžè¬çã«èšã£ãŠéåžžã«ã¯ãŒã«ãªæ©èœã§ãã
ãããããã®ã¢ãããŒãã«ã¯é·æãšçæã®äž¡æ¹ããããŸãã ã©ã®ããã«æ©èœããŸããïŒ Rubyã§ã¯ïŒä»ã®ã»ãšãã©ã®é«ã¬ãã«èšèªã®ããã«ïŒãã¡ãœããã¯ã¯ã©ã¹ã«å¯Ÿå¿ããããã·ã¥ããŒãã«ã®åãªããšã³ããªã§ãã 次ã«ã衚瀺ãããåã¢ã³ã¹ã¿ãŒãµãã¯ã©ã¹ã®ããã·ã¥ããŒãã«ã«ãšã³ããªãè¿œå ããŸãã å©ç¹ïŒ
- ã¢ã»ã¹ã¡ã³ããšã«ãã®ãã¹ãŠã®ã³ãŒãã¯ãã®ãã¡ã€ã«ã«å«ãŸããŠããŸãã
- ã³ãŒãã¯ãelfãã¡ã€ã«ãããŒãããããŸã§ã¯ã©ã¹ã«è¿œå ãããŸããã
- ãšã«ãã ãã§ãªããã·ã¹ãã å ã®ä»ã®èª°ããããšã«ãã奜ããã©ãããã¢ã³ã¹ã¿ãŒã«å°ããããšãã§ããŸãã
æ¬ ç¹ã¯ããšã«ããæžãããåŸã«ã²ãŒã ã«è¿œå ãããããããšã«ããã¢ã³ã¹ã¿ãŒãèªèããªãå Žåã®ããã©ã«ãã®åäœãæäŸããå¿ èŠãããããšã§ãã 誰ããã°ã¬ã ãªã³ãæãã€ããå Žåãããªãã®ãšã«ãã¯ããªãŒãºããã°ã¬ã ãªã³ãè¿œå ããŠã³ãŒããæŽæ°ãããŸã§ãç¥ã¯ããã¯äœã ïŒããšå«ã¶ã
ã·ã¹ãã å ã®ãã¹ãŠã®ã¯ã©ã¹ãäœããã®æ¹æ³ã§åé¡ããããããã¢ã³ã¹ã¿ãŒã®åå«ã§ãããã©ããã確èªã§ããã°ãæ°è¡ã®ã³ãŒãã§ãã¹ãŠã決å®ããããšæããŸãã Rubyã§ã¯å¯èœã ãšæããŸããããã§ã«ããŒããããŠããã¯ã©ã¹ã«å¯ŸããŠã®ã¿ã§ãã ãŸã ãã£ã¹ã¯äžã«ããã¯ã©ã¹ã®å Žåãããã¯æ©èœããŸããïŒ ç¢ºãã«ãã®åé¡ãåé¿ã§ããŸããããã£ã¹ã¯ã«å ããŠããããã¯ãŒã¯ããããŸã...
ãã ããããã©ã«ãã®åäœã®å¿ èŠæ§ã¯ææªã§ã¯ãããŸããã ããã«é倧ãªæ¬ ç¹ããããŸãã ã¹ã¬ããã»ãŒããšèšããŸãã ããã¯çå£ã«ç§ãæ©ãŸã-ãã®å Žåã®ã¹ã¬ããã®å®å šæ§ã®ããã®Rubyã®ã»ãã³ãã£ã¯ã¹ãæ確ã«å®çŸ©ãããŠãããšã¯æããªãã ã¯ã©ã¹ã¬ãã«ã®åæã¯ãããŸããïŒ pre-elfã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã®ã¹ããªãŒã ã¯ã©ããªããŸããïŒ ä»æ§ããœãŒã¹ã³ãŒããç解ããã®ã«ååãªæ¥æ¬èªããŸã ããããŸããã
ãããã æ¬åœã«åé¡ãªã®ã¯ãã·ã¹ãã ã®ãã¹ãŠã®ã¯ã©ã¹ã§ã³ãŒããå¢å ãå§ããããšã§ãã ã«ãã»ã«åéåãçºçããŸãã
å®éã¯ãã£ãšæªãã§ã æªããã¶ã€ã³ã®åãã 芳å¯è ãäžçš®ã®å€æãäžãããããã®å€æã®ã³ãŒãã芳å¯å¯Ÿè±¡ã«æ·»ä»ããç¶æ³ãçããŸãã ç§ã¯èªåã®ããã¢ããååãæ©ãåã£ãŠã次ã®ãããªèšèã䜿ã£ãŠåã ã®ãããžãææž¡ããŠããããã«èŠããŸããããé¡ããã©ãã«ãããªãã§ãã ããã ç§ã¯ããªããã奜ããã©ããã圌ããç解ã§ããŸããã çŸå®ã®äžçã§ã¯ããã¹ãŠã®åäœãç°ãªããOOPã¯çŸå®ã®äžçãã¢ãã«åããããšã«ãªã£ãŠããŸãã
æ¹èšå€å
ããŠãç§ã¯èªåã®èããéåžžã«æ確ã«å®åŒåããã®ã§ ãå€åã¯ãã¯ãç¹å¹è¬ã®ããã«ã¯èŠããŸããã éæ¡åŒµã·ã¹ãã ã§ãããªããžã§ã¯ãã®ã¿ã€ãã«åºã¥ããŠäœããã®éžæããããå Žåãéžæããã®ãªããžã§ã¯ãèªäœã«è»¢éããããšã¯æå³ããããŸããã
äŸãšããŠãèªèšŒãååŸããæ¹ãããå®çšçã§æ ¹æ ããããŸãã ã¢ã¯ã»ã¹å¶åŸ¡ã·ã¹ãã ãéçºããŠããå Žåãä»®æ³ã¢ã¯ã»ã¹ããã³ã¢ã¯ã»ã¹
()
ããã¹ãŠã®é¢ä¿è ã«ãã®ã¡ãœããã®å®è£ ã匷å¶ããŸããïŒ ã€ãŸããå ¥ãå£ã«èŠåå¡ã眮ããå ¥ã£ãŠãã人ããããã«ã建ç©ãžã®ã¢ã¯ã»ã¹ãèš±å¯ãããå°ããŸããïŒ
ãŸããïŒ ã©ã³ã¿ã€ã æ€èšŒã³ãŒãã«è¿œå ããå¿ èŠããããŸãã
public boolean ( s) { return (s.() || s.() || s.()); }
ãã ããã¯ã©ã¹æ€èšŒã¯çŽæ¥äœ¿çšãããŠããŸããã ããšãã°ã
s instanceof
ã¯æžããŠããŸããã ããã§åé¡ã¯äœã§ããïŒ
ããŠããªããžã§ã¯ãã®ãã¿ã€ããã¯ãæ¬è³ªçã«ã¯ããã®ã¯ã©ã¹ïŒæããã«åºå®ãããå€æŽãããŠããªãïŒãšãã®ããããã£ïŒå®è¡æã«åºå®ãŸãã¯å€æŽå¯èœïŒã®éåäœã§ãã ããã¯å¥ã®è°è«ã®ãããã¯ã§ãããåã¯ã¯ã©ã¹ãããããããã£ã«ãã£ãŠæ±ºå®ãããããã§ãã ããã¯ãåŸè ã«åºæã®æè»æ§ããªãããã§ãã ããããC ++ãJavaãªã©ã®ãåŸæ¥ã®ãèšèªã§ã¯ãå§ä»»ã®æ§æãµããŒãããªãããããã®ãããªã¢ãããŒãã§ã¯ã³ãŒãã®åå©çšãå°ãé£ãããªããŸãã ïŒãããæå³ããªããªãããšãçªç¶ã«æãããå Žåããã¹ãŠãé 調ã§ããç§ã¯ãã§ã«æåŸãã2çªç®ã®ã¹ããŒãžã«åããéäžã§3æ¯ç®ã®ã¯ã€ã³ã飲ã¿çµããŠããŸãã
åæã«ãã¡ã€ã³ã¢ã€ãã¢ãæ確ã«è¡šçŸã§ããããšãé¡ã£ãŠããŸã ã ããªã¢ãŒãã£ãºã ã¯ãããªã¢ãŒãã£ãã¯ãªåäœãå®éã«ãªããžã§ã¯ãã«å±ããŠããå Žåã«ã®ã¿æå³ãæã¡ãŸã ã ããããµããžã§ã¯ãã®åäœã§ããå Žåãåçãªåãã§ãã¯ãæãŸããã§ãã
ãŸãšã
ã§ããããä»æ¥ã®æçš¿ããäœãæçãªããšãåŠãã ãšæããŸããç§ã¯èªåèªèº«ã«ã€ããŠç¢ºä¿¡ããŠããŸããããšãã°ãGoogleã®æ€çŽ¢ãšã³ãžã³ã¯ãå®éã«ã¯En ãš Kin Skywalker ãä¿®æ£ããã®ã«ååãªã»ã©ã¹ããŒãã§ããããšãããããŸããããEn ãš Kin Skywalkerã§ããïŒããããæ ¢ãªç·ãã¡ïŒèäœæš©ããããã«å±ããŠããããã§ã¯ãããŸããã
ãŸããããã°ãšã³ããªã®çæ³çãªé·ãã¯æ£ç¢ºã«2æ¯ã®ã¯ã€ã³ã§ããããšãããããŸãããããã«é²ããšãã»ãšãã©äžè²«æ§ã®ãªãæŽèšãå§ããŸããã¯ãããã€ã€ã«é床ã¯å°çã«è¡ããŸãã
ãã¹ãŠæé«ã
ãªãªãžãã«- ããªã¢ãŒãã£ãºã ã倱æãããšããã¹ãã£ãŒãã€ã§ããžãStevey's Drunken Blog Rants