May 05, 2005

¼«Í³¼«ºß Squeak ¥×¥í¥°¥é¥ß¥ó¥°¡§Â裷¾Ï Morphic ÆþÌç¡Ê£±¡Ë

Squeak Logo
squeak¤Ç¥°¥é¥Õ¥£¥«¥ë¤Ê¥×¥í¥°¥é¥à¤òºî¤ë»þ¤Ë¡¢Morphic¡Ê¥â¡¼¥Õ¡Ë¤òÍøÍѤ¹¤ë¡£
squeak¤Î¥Ç¥¹¥¯¥È¥Ã¥×¤âMorphic¤Çºî¤é¤ì¤Æ¤¤¤ë¡£
¥â¡¼¥Õ¤ÎÀ¸À®¡§Morph ¥¯¥é¥¹¤Înew¥á¥Ã¥»¡¼¥¸¤ÇÀ¸À®¤¹¤ë¡£
Î㡧Morph ¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤òÀ¸À®¤·¤Æ¡¢¥ï¡¼¥ë¥É¤Ëɽ¼¨¡£
¡¡¡¡morph := Morph new.
¡¡¡¡morph openInWorld. "do it"
¥â¡¼¥Õ¤òºï½ü¤¹¤ë¤Ë¤Ï¡¢¥¤¥ó¥¹¥¿¥ó¥¹¤Ë delete ¥á¥Ã¥»¡¼¥¸¤òÁ÷¤ë¡£
¡¡¡¡morph delete. "do it"
¢¨¡§Morph new openInWorld. "do it" ¤Ç¤âÀ¸À®¤Ç¤­¤ë¤¬¡¢delete¤òÁ÷¤ë¥¤¥ó¥¹¥¿¥ó¥¹¤¬¤Ê¤¤¤Î¤Ç¡¢¥â¡¼¥Õ¤ò±¦¥¯¥ê¥Ã¥¯¤·¡¢¥Ï¥í¡¼¤òɽ¼¨¤·¤Æº¸¾å¤Î¡Ê¡ß¡Ë¥Ü¥¿¥ó¤ÇÊĤ¸¤ë¡£

¥Ï¥í¡¼¡Êhalo¡Ë¡§¥â¡¼¥Õ¤ò±¦¥¯¥ê¥Ã¥¯¤¹¤ë¤È¡¢¥â¡¼¥Õ¤Î¼þ¤ê¤Ëɽ¼¨¤µ¤ì¤ë¥¢¥¤¥³¥ó¤ò¡Ö¥Ï¥í¡¼¡¡halo¡§¸å¸÷¡×¤È¸À¤¦¡£
halo

  1. ºï½ü¡ÊMove to trash¡Ë¡§¥¯¥ê¥Ã¥¯¤¹¤ë¤È¡¢¥â¡¼¥Õ¤¬¥´¥ßÈ¢¤Ø°ÜÆ°¤µ¤ì¤ë¡£
  2. ºÇ¾®²½¡ÊCollapse¡Ë¡§¥¿¥¤¥È¥ë¥Ð¡¼¤Î¤ß¤Î·Á¾õ¤Ç¡¢¥Ç¥¹¥¯¥È¥Ã¥×¤Îü¤Ëɽ¼¨¤µ¤ì¤ë¡£¤â¤¦°ìÅÙ¥¯¥ê¥Ã¥¯¤¹¤ë¤È¸µ¤ËÌá¤ë¡£
  3. ¥Ó¥å¡¼¥¢¤ò³«¤¯¡ÊOpen a Viewer for me¡Ë¡§¥¿¥¤¥ë¥¹¥¯¥ê¥×¥È¡ÊSqueak Toys¡Ë¤ÇÁàºî¤¹¤ë¤¿¤á¤Î¡¢¡Ö¥Ó¥å¡¼¥¢¡×¤òɽ¼¨¤¹¤ë¡£
  4. ¥¿¥¤¥ëÀ¸À®¡ÊMake a tile representing this object¡Ë¡§¥¿¥¤¥ë¥¹¥¯¥ê¥×¥È¡ÊSqueak Toys¡Ë¤Ç»ÈÍѤ¹¤ë¡¢¤½¤Î¥â¡¼¥Õ¤Î¥¿¥¤¥ë¤òÀ¸À®¤¹¤ë¡£
  5. ²óž¡ÊRotate¡Ë¡§¥É¥é¥Ã¥°¤¹¤ë»ö¤Ç¡¢¥â¡¼¥Õ¤òǤ°Õ¤Î³ÑÅ٤˲󞤹¤ë¡£
  6. ¥á¥Ë¥å¡¼¡ÊMenu¡Ë¡§¥â¡¼¥Õ¤Ë´Ø¤¹¤ë¥Ý¥Ã¥×¥¢¥Ã¥×¥á¥Ë¥å¡¼¤òɽ¼¨¡£
  7. ¥°¥é¥Ö¡ÊPick up¡Ë¡§Æþ¤ì»Ò¤Ë¤Ê¤Ã¤¿¥â¡¼¥Õ¤«¤é¡¢ÁªÂò¤·¤¿¥â¡¼¥Õ¤ò¼è¤ê½Ð¤¹¡£
  8. ¥à¡¼¥Ö¡ÊMove¡Ë¡§¥É¥é¥Ã¥°¤¹¤ë»ö¤Ç¡¢¥â¡¼¥Õ¤ò°ÜÆ°¤¹¤ë¡£¡Ê¥Ï¥í¡¼¤ò»È¤ï¤Ê¤¯¤Æ¤â¡¢¥â¡¼¥Õ¤Ï°ÜÆ°²Äǽ¡Ë
  9. Ê£À½¡ÊDuplicate¡Ë¡§¥É¥é¥Ã¥°¤¹¤ë¤È¡¢¥â¡¼¥Õ¤Î¥³¥Ô¡¼¤¬ºîÀ®¤µ¤ì¤ë¡£
  10. ¥Ç¥Ð¥Ã¥°¡ÊDebug¡Ë¡§¥¤¥ó¥¹¥Ú¥¯¥¿¤Ê¤É¡¢¥Ç¥Ð¥Ã¥°Íѥݥåץ¢¥Ã¥×¤òɽ¼¨¡£
  11. ¥¹¥Ý¥¤¥È¡ÊChange color¡Ë¡§¥«¥é¡¼ÁªÂò¥Ä¡¼¥ë¤òɽ¼¨¤·¡¢¥â¡¼¥Õ¤Î¿§¤òÊѹ¹¤Ç¤­¤ë¡£
  12. ¥ê¥µ¥¤¥º¡ÊChange size¡Ë¡§¥É¥é¥Ã¥°¤¹¤ë¤È¡¢¥â¡¼¥Õ¤Î¥µ¥¤¥º¤òÊѹ¹¤Ç¤­¤ë¡£
¢¨¡§¥«¥Ã¥³Æâ¤Ï³Æ¥Ï¥í¡¼¤Ë¥«¡¼¥½¥ë¤ò¹ç¤ï¤»¤¿»þ¤Ëɽ¼¨¤µ¤ì¤ë¤Õ¤­¤À¤·¤ÎÆâÍƤǤ¹¡£

¡ã¥¤¥ó¥¹¥Ú¥¯¥¿¤«¤é¤ÎÁàºî¡ä¡§¾õÂÖ¤ò¸«¤ë¤À¤±¤Ç¤Ê¤¯¡¢ÃͤòÊѹ¹¤ä¥á¥Ã¥»¡¼¥¸¤òÁ÷¤ë»ö¤¬¤Ç¤­¤ë
À¸À®¤·¤¿¥â¡¼¥Õ¤ò±¦¥¯¥ê¥Ã¥¯¤·¤Æ¥Ï¥í¡¼¤òɽ¼¨¤·¡¢10.¥Ç¥Ð¥Ã¥°¡Ê¥¹¥Ñ¥Ê¥¢¥¤¥³¥ó¡Ë¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤È¡¢¡ÖMorph¡×¥á¥Ë¥å¡¼¤¬³«¤­¤Þ¤¹¤Î¤Ç¡¢°ìÈÖ¾å¤Î¡Öinspect morph¡×¤òÁªÂò¤·¤Æ¡¢¥â¡¼¥Õ¤Î¥¤¥ó¥¹¥Ú¥¯¥¿¥¦¥¤¥ó¥É¥¦¤òɽ¼¨¤·¤Þ¤¹¡£
inspect morph
¡¦¥¤¥ó¥¹¥Ú¥¯¥¿¤«¤é¤Î¥á¥Ã¥»¡¼¥¸Á÷¿®¡§¥¤¥ó¥¹¥Ú¥¯¥¿¥¦¥¤¥ó¥É¥¦¤Î¥á¥Ã¥»¡¼¥¸Á÷¿®¥Ú¥¤¥ó¤«¤é¡¢¥â¡¼¥Õ¤Ë¥á¥Ã¥»¡¼¥¸¤òÁ÷¤ë»ö¤¬¤Ç¤­¤ë¡£
¡¡Î㡧self position. "print it"¡¡bounds¥×¥í¥Ñ¥Æ¥£¤ÈƱ¤¸¡¢°ÌÃÖ 256@128 ¾ðÊó¤òÆÀ¤é¤ì¤ë¡£
¡¡¡¡¡¡self position: 100@100. "do it"¡¡¥­¡¼¥ï¡¼¥É¥á¥Ã¥»¡¼¥¸postion: ¤Ë°ÌÃÖ¤òÅϤ¹»ö¤Ç¥â¡¼¥Õ¤ò°ÜÆ°¤Ç¤­¤ë¡£
¡¦ÊÑ¿ô¥Ú¥¤¥ó¾å¤Ç¤ÎľÀܽñ¤­´¹¤¨¡§¥â¡¼¥Õ¤Î¥×¥í¥Ñ¥Æ¥£¤òÁªÂò¤·¤Æ¡¢ÊÑ¿ô¥Ú¥¤¥ó¤Ëɽ¼¨¤µ¤ì¤¿ÃͤòľÀÜÊѹ¹¤¹¤ë»ö¤â¤Ç¤­¤ë¡£
¡¡Î㡧¥×¥í¥Ñ¥Æ¥£Í󤫤é¡Öcolor¡×¤òÁª¤Ó¡¢ÊÑ¿ô¥Ú¥¤¥ó¤ÎÆâÍƤò¡ÖColor blue¡×¤ËÊѤ¨¤ÆÊÑ¿ô¥Ú¥¤¥ó¾å¤ÇÃæ¥Ü¥¿¥ó¥¯¥ê¥Ã¥¯¤·"accept"(command - S)¤·¤Þ¤¹¡£¥á¥Ã¥»¡¼¥¸Á÷¿®¥Ú¥¤¥ó¤Ç¥­¡¼¥ï¡¼¥É¥á¥Ã¥»¡¼¥¸ color: ¤ò»È¤Ã¤¿»þ¤È°ã¤¤¡¢¥â¡¼¥Õ¤ËÊѹ¹¤¬Ï¢Íí¤µ¤ì¤Ê¤¤¤Î¤Ç¡¢¥â¡¼¥Õ¤ò¥Þ¥¦¥¹¤Ç°ìÅÙ¥¯¥ê¥Ã¥¯¤¹¤ë¤«¡¢¤Þ¤¿¤Ï¥á¥Ã¥»¡¼¥¸Á÷¿®¥Ú¥¤¥ó¤Ç self changed. "do it" ¤·¤Þ¤¹¡£¡ÊMorph¥¯¥é¥¹¤Î¥¤¥ó¥¹¥¿¥ó¥¹¥á¥Ã¥»¡¼¥¸color: ¤ò¸«¤ë¤È¡¢ºÇ¸å¤Ëself changed ¤¬Í­¤ê¤Þ¤¹¡£¡Ë

¡ã¥ª¥Ö¥¸¥§¥¯¥È¡¦¥¨¥¯¥¹¥×¥í¡¼¥é¡ä¡§Ê£»¨¤Ê¥â¡¼¥Õ¡Ê¥ª¥Ö¥¸¥§¥¯¥È¡Ë¤ò´Ñ»¡¤¹¤ë»þ¤ËÊØÍø¤ÊÈÆÍѥġ¼¥ë
¥â¡¼¥Õ¤ò±¦¥¯¥ê¥Ã¥¯¤·¥Ï¥í¡¼¤«¤é¡¢10.¥Ç¥Ð¥Ã¥°¡Ê¥¹¥Ñ¥Ê¥¢¥¤¥³¥ó¡Ë¤ò¥¯¥ê¥Ã¥¯¡¢¡ÖMorph¡×¥á¥Ë¥å¡¼¤Î¾å¤«¤é£³¤ÄÌÜ¡Öexplore morph¡×¥á¥Ë¥å¡¼¤òÁªÂò¤·¤Þ¤¹¡£
²£¸þ¤­»°³Ñ¥Þ¡¼¥¯¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤È¡¢¤½¤Î¹àÌܤ˴ؤ·¤Æ¤Î¤è¤ê¾Ü¤·¤¤ÆâÍƤò¸«¤ë»ö¤¬¤Ç¤­¤ë¡£

¡ã¥Ó¥å¡¼¥¢¤«¤é¤ÎÁàºî¡ä¡§¥â¡¼¥ÕÀìÍѤΥġ¼¥ë
¥¨¥ó¥É¥æ¡¼¥¶¤¬´Êñ¤Ë¥â¡¼¥Õ¤ÎÃͤò¸«¤¿¤ê¡¢¥¿¥¤¥ë¥¹¥¯¥ê¥×¥È¤ËÍøÍѤ¹¤ë¤¿¤á¤Ë»ÈÍѤµ¤ì¤ë¡£
¥â¡¼¥Õ¤ò±¦¥¯¥ê¥Ã¥¯¤·£³¡¥¥Ó¥å¡¼¥¢¡ÊÌÜ¥¢¥¤¥³¥ó¡Ë¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤È¡¢²èÌ̱¦Â¦¤Ë¥Ó¥å¡¼¥¢¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£
¢¨¡§¥¨¥ó¥É¥æ¡¼¥¶Íѥӥ塼¥¢¤Î°ÌÃÖ¡ÊMorph's x, y¡Ë¤Èbounds ¥×¥í¥Ñ¥Æ¥£¤È¤Ï¡¢ºÂɸ·Ï¤¬°ã¤¦°Ù¡¢Ãͤ¬°ã¤Ã¤Æ¤¤¤ë¡£


10:18:05 | 3k1 | comments(0) | TrackBacks

April 17, 2005

¼«Í³¼«ºß Squeak ¥×¥í¥°¥é¥ß¥ó¥°¡§Â裶¾Ï ´ðËÜ¥¯¥é¥¹¥é¥¤¥Ö¥é¥êõ¸¡¨¡¤½¤Î£²(£³)

Squeak Logo
¡ã¥¹¥È¥ê¡¼¥à¥¯¥é¥¹·²¡ä¡§¥¹¥È¥ê¡¼¥à¤Ï°ì³¤­¤Î¥Ç¡¼¥¿¤ò½èÍý¤¹¤ë¤â¤Î¤Ç¡¢É¬¤º¤Ê¤ó¤é¤«¤Î¥³¥ì¥¯¥·¥ç¥ó¡Ê¥¯¥é¥¹¤Î¥¤¥ó¥¹¥¿¥ó¥¹¡Ë¤ò¸µ¤ËÀ¸À®¤¹¤ë¤¬¡¢Ëؤɤξì¹ç¤Ï String ¤ò°·¤¦»þ¤ËÍøÍѤµ¤ì¤ë¡£

³°Éô¥¹¥È¥ê¡¼¥à¡§¥Õ¥¡¥¤¥ë¤ä¥½¥±¥Ã¥È¤ò²ð¤·¤Æ¡¢Squeak¤Î³°¤È¤ä¤ê¤È¤ê¤¹¤ë¤¿¤á¤Î¥¹¥È¥ê¡¼¥à
FileStream¡§¥Õ¥¡¥¤¥ë¤ËÂФ·¤ÆÆɤ߽ñ¤­¤ò¹Ô¤¦¥¹¥È¥ê¡¼¥à¡£
´ðËÜŪ¤Ê»È¤¤Êý¤Ï¡¢¥Õ¥¡¥¤¥ë¥¹¥È¥ê¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò¥Õ¥¡¥¤¥ë̾¤ò»ØÄꤷ¤ÆÀ¸À®¤·¡¢¥Ç¡¼¥¿¤ò½ñ¤­¹þ¤ß¡¿Æɤ߹þ¤ß¸å¡¢¥Õ¥¡¥¤¥ë¥¹¥È¥ê¡¼¥à¤òÊĤ¸¤ë¡£
¥Õ¥¡¥¤¥ë¥¹¥È¥ê¡¼¥à¤òÊĤ¸Ëº¤ì¤ë¤È¡¢Squeak¤ò½ªÎ»¤¹¤ë¤Þ¤Ç¥Õ¥¡¥¤¥ë¤Ë¥¢¥¯¥»¥¹¤Ç¤­¤Ê¤¤¡£
¡¡¥Õ¥¡¥¤¥ë¤Ø½ñ¤­¹þ¤àÎ㡧
¡¡¡¡fs := FileStream newFileNamed: 'test.txt'.
¡¡¡¡fs nextPutAll: '¥Æ¥¹¥È', (Character cr) asString, '¤Ç¤¹'.
¡¡¡¡fs nextPut: Character cr.
¡¡¡¡fs close. "do it"
¡¡¢¨¡§Æ±¤¸¥Õ¥¡¥¤¥ë̾¤Ç½ñ¤­¹þ¤â¤¦¤È¤¹¤ë¤È¡¢¾å½ñ¤­¤«¡¢Ì¾Á°¤òÊѤ¨¤ë¤«¡¢¥­¥ã¥ó¥»¥ë¤¹¤ë¤«¤Î¥À¥¤¥¢¥í¥°¤¬É½¼¨¤µ¤ì¤ë¡£
¡¡¢¨¡§ÆüËܸìÈÇSqueak¤Î¾ì¹ç¡¢Ê¸»ú¥³¡¼¥É¤ÏUTF-8¡¢²þ¹Ô¥³¡¼¥É¤ÏCR¡ÊCharacter value: 13¡Ë¤Ë¤Ê¤ë¡£
¡¡¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤àÎ㡧
¡¡¡¡fs := FileStream readOnlyFileNamed: 'test.txt'.
¡¡¡¡Transcript cr.
¡¡¡¡[fs atEnd] whileFalse: [Transcript show: fs next; space. ].
¡¡¡¡fs close. "do it"
¡¡¢¨¡§¥Õ¥¡¥¤¥ëÆɤ߹þ¤ß»þ¤â¡¢ºÇ¸å¤Ë¥Õ¥¡¥¤¥ë¥¹¥È¥ê¡¼¥à¤òÊĤ¸¤ë»ö¤ò˺¤ì¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¡£
¡¡¥Ð¥¤¥Ê¥ê¥Õ¥¡¥¤¥ë¤ò½ñ¤­¹þ¤àÎ㡧
¡¡¡¡fs := FileStream newFileNamed: 'test.bin'.
¡¡¡¡fs binary. "¥Õ¥¡¥¤¥ë¥¹¥È¥ê¡¼¥à¤ò¥Ð¥¤¥Ê¥ê¥â¡¼¥É¤ËÀßÄꤹ¤ë"
¡¡¡¡fs nextPutAll: #(84 69 83 84 13) asByteArray. "ÇÛÎó¤òByteArray¤Ë¥­¥ã¥¹¥È¤·¤Æ½ñ¤­¹þ¤ß"
¡¡¡¡32 to: 122 do: [:temp | fs nextPut: temp. ]. "32¤«¤é122¤Þ¤Ç¤ò½ñ¤­¹þ¤à"
¡¡¡¡fs close. "do it"
¡¡¢¨¡§¥Ð¥¤¥Ê¥ê¥Õ¥¡¥¤¥ë¤Ø¤Î½ñ¤­¹þ¤ß¤Ï¡¢0¤«¤é255¤ÎÀ°¿ô¤Î¤ß¤ËÀ©¸Â¤µ¤ì¤Æ¤¤¤ë¡£
²þ¹Ô¥³¡¼¥É¤Î°·¤¤¡§Mac(Squeak)=CR¡ÊCharacter value: 13¡Ë, Unix=LF¡ÊCharacter value: 10¡Ë, Windows=CR, LF¡ÊCharacter value: 13, Character value: 10¡Ë
Squeak¤Ï¥Þ¥ë¥Á¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤ÇÆ°ºî¤¹¤ë¤Î¤Ç¡¢²þ¹Ô¥³¡¼¥É¤ò¶èÀÚ¤ê¤Ë¤·¤¿¤¤¾ì¹ç¡¢FileStream¤Î¥µ¥Ö¥¯¥é¥¹¡ÖCrLfFileStream¡×¥¯¥é¥¹¤òÍøÍѤ¹¤ë¡£
¡¡£±¹ÔËè¤ËÆɤ߹þ¤àÎ㡧
¡¡¡¡fs := CrLfFileStream fileNamed: (FileStream fullName: 'test.txt').
¡¡¡¡[fs atEnd] whileFalse: [Transcript cr; show: (fs upTo: Character cr).].
¡¡¡¡fs close.
¡¡¢¨¡§¼«Í³¼«ºß¤Î¥µ¥ó¥×¥ë¤½¤Î¤Þ¤Þ¤ÎFileStream fullName: ¤Ï¥Þ¥ë¥Á¥Ð¥¤¥ÈÂбþ¡© ̵¤¯¤Æ¤âÆ°¤¯»ö¤ÏÆ°¤¯¤¬¡Ä¡£
¤½¤Î¾¤Î½ÅÍפʥ¹¥È¥ê¡¼¥à
(1) RWBinaryOrTextStream¡§FileStream¤ÎÆâÉô¥á¥â¥êÈÇ¡ÊWriteStream¤Î¥µ¥Ö¥¯¥é¥¹¡Ë¤Ç¡¢Â礭¤Ê¥Ç¡¼¥¿¤ò¤¤¤­¤Ê¤ê¥Õ¥¡¥¤¥ë¤Ë½ñ¤«¤Ê¤¤¾ì¹ç¤ËÍøÍÑ¡£¤Þ¤¿¡¢ReadStrem, WriteStream¤ÎÍͤËǤ°Õ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤Ï¤Ê¤¯¡¢¥Ð¥¤¥ÈÎó¤Èʸ»úÎó¤ËºÇŬ²½¤µ¤ì¤Æ¤¤¤ë¡£
¡¡String¤ò»ØÄꤷ¤ÆÀ¸À®¤¹¤ëÎ㡧String new: ¤ò ByteArray new: ¤Ë¤¹¤ë¤È¡¢¥Ð¥¤¥È¥â¡¼¥É¤Ë¤Ê¤ë¡£
¡¡¡¡ws := RWBinaryOrTextStream on: (String new: 50). "String¤ÇRWBinaryOrTextStream¤òÀ¸À®"
¡¡¡¡ws nextPutAll: 'Character value:33, 34, 35, 36, 37 = '. "ʸ»úÎó¤ò¥»¥Ã¥È"
¡¡¡¡ws nextPutAll: (#(33 34 35 36 37) asByteArray). "¥Ð¥¤¥ÈÎó¤ò¥»¥Ã¥È"
¡¡¡¡ws contents. "print it"
¡¡À¸À®»þ¤Ë»ØÄꤻ¤º¡¢¥¤¥ó¥¹¥¿¥ó¥¹¤ËÌÀ¼¨Åª¤Ë¥á¥Ã¥»¡¼¥¸¤òÁ÷¤ëÎ㡧
¡¡¡¡rws := RWBinaryOrTextStream on: (String new: 10).
¡¡¡¡rws nextPutAll: 'Squeak!'.
¡¡¡¡rws contents. "¤³¤³¤Ç print it ¤¹¤ë¤È¡¢String new:¤ÇÀ¸À®¤·¤¿¤Î¤Çʸ»úÎó"
¡¡¡¡rws binary.
¡¡¡¡rws contents. "¤³¤³¤Ç print it ¤¹¤ë¤È¡¢binary¥á¥Ã¥»¡¼¥¸¤òÁ÷¤Ã¤¿¤Î¤Ç¥Ð¥¤¥ÈÎó"
¡¡¡¡rws text.
¡¡¡¡rws contents. "¤³¤³¤Ç print it ¤¹¤ë¤È¡¢text¥á¥Ã¥»¡¼¥¸¤òÁ÷¤Ã¤¿¤Î¤Ç¤Þ¤¿Ê¸»úÎó"
(2) TranscriptStream¡§WriteStream¤Î¥µ¥Ö¥¯¥é¥¹¤Ç¡¢¤½¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤Ï¡¢¥°¥í¡¼¥Ð¥ëÊÑ¿ô Transcript ¤Ë¥Ð¥¤¥ó¥É¡ÊÂåÆþ¡Ë¤µ¤ì¤Æ¤¤¤ë¡£¡ÊTranscript inspect. ¤¹¤ë¤È¡¢¥¤¥ó¥¹¥Ú¥¯¥¿¤Î¥¿¥¤¥È¥ë¤¬TranscriptStream¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£¡Ë
¡¡Transcript cr; show: 'Squeak!'. ¤òʬ²ò¤·¤¿Î㡧Transcript browseHierarchy ¤Ç¥¤¥ó¥¹¥¿¥ó¥¹¥á¥½¥Ã¥Éshow:¤ò»²¾È
¡¡¡¡Transcript nextPut: Character cr. "²þ¹Ô¤òÄɲÃ"
¡¡¡¡Transcript nextPutAll: 'Squeak!'. "ʸ»úÎó¤òÄɲÃ"
¡¡¡¡Transcript endEntry. "ɽ¼¨¤ò¹¹¿·"
(3) DataStream, ReferenceStream, SmartRefStream¡§Ê£»¨¤Ê¹½Â¤¤ò»ý¤Ä¥ª¥Ö¥¸¥§¥¯¥È¤ò¡¢¥³¥ó¥Ñ¥¯¥È¤Ê¥Ð¥¤¥ÈÎó¤ØÊÑ´¹¤·¡¢Êݸ¡¿Éü¸µ¤¹¤ë¥¹¥È¥ê¡¼¥à·²¡£
¡¡i. DataStream¡§Èæ³ÓŪñ½ã¤Ê¥Ç¡¼¥¿¤òÊݸ¡¿Éü¸µ¤¹¤ë¤Î¤ËÍøÍÑ¡£
¡¡ii.ReferenceStream¡§Ê£»¨¤Ê»²¾È´Ø·¸¤ò»ý¤Ã¤¿¥ª¥Ö¥¸¥§¥¯¥È¤òÊݸ¡¿Éü¸µ¤¹¤ë¤Î¤ËÍøÍÑ¡£
¡¡iii.SmartRefStream¡§ReferenceStream¤Î³ÈÄ¥ÈǤǡ¢¥¤¥ó¥¹¥¿¥ó¥¹¤Î¥¯¥é¥¹¾ðÊó¤â¥Ð¥¤¥ÈÎó¤Ë´Þ¤Þ¤ì¤ë¡£
¡¡DataStream¤ÎÎ㡧³°Éô¥¹¥È¥ê¡¼¥à
¡¡¡¡ds := DataStream fileNamed: 'objects.bin'. "¥Õ¥¡¥¤¥ë̾¤ò»ØÄꤷ¤ÆÀ¸À®"
¡¡¡¡ds nextPut: 'º£Æü¤Ï : '. "String ¥ª¥Ö¥¸¥§¥¯¥È¤Î½ñ¤­¹þ¤ß"
¡¡¡¡ds nextPut: Date today. "Date ¥ª¥Ö¥¸¥§¥¯¥È¤Î½ñ¤­¹þ¤ß"
¡¡¡¡ds close.
¡¡¡¡½ñ¤­½Ð¤·¤¿¥Õ¥¡¥¤¥ë¤«¤é¥Ð¥¤¥ÈÎó¤òÆɤߡ¢¥ª¥Ö¥¸¥§¥¯¥È¤ËÌ᤹Îã
¡¡¡¡ds := DataStream fileNamed: 'objects.bin'. "¥Õ¥¡¥¤¥ë̾¤ò»ØÄꤷ¤ÆÀ¸À®"
¡¡¡¡[ds atEnd] whileFalse: [ Transcript cr; show: ds next. ]. "¥Ð¥¤¥ÈÎ󤫤饪¥Ö¥¸¥§¥¯¥È¤ËÉü¸µ"
¡¡¡¡ds close.
¡¡DataStream¤ÎÎ㡧ÆâÉô¥¹¥È¥ê¡¼¥à¡Ê¥¯¥é¥¹¥á¥½¥Ã¥É¤ò»ÈÍÑ¡Ë
¡¡¡¡sb := DataStream streamedRepresentationOf: 'ÆüËܸì'. "¥Ð¥¤¥ÈÎ󲽤·¤ÆÊݸ"
¡¡¡¡Transcript cr show: (DataStream unStream: sb). "¥Ð¥¤¥ÈÎ󤫤饪¥Ö¥¸¥§¥¯¥È¤ËÉü¸µ"

ensure: ¤Ë¤è¤ëÊĤ¸(close)˺¤ì¤ÎËɻߡ§¥¨¥é¡¼½èÍý¹½Ê¸
½ñ¤­Êý¡§[¥¨¥é¡¼¤¬µ¯¤­¤ë¤«¤â¤·¤ì¤Ê¤¤½èÍý] ensure: [¥¨¥é¡¼¤Î̵ͭ¤Ë´Ø¤ï¤é¤º¼Â¹Ô¤¹¤ë½èÍý]
¡¡Î㡧¥¨¥é¡¼²èÌ̤Î[Abandon]¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤â¡¢ensure: ¥Ö¥í¥Ã¥¯¤Ïɬ¤º¼Â¹Ô¤µ¤ì¤ë¡£
¡¡¡¡[ans := Time now seconds ¥¥ 2.
¡¡¡¡Transcript show: '1 / ', ans asString, ' = '.
¡¡¡¡ans = 0 ifTrue: [Transcript show:'¥¨¥é¡¼!! ZeroDivide:[Abandon]¤ò¥¯¥ê¥Ã¥¯'. 1 / ans.]
¡¡¡¡ifFalse:[Transcript show: 1 / ans].
¡¡¡¡Transcript show:'¡§·×»»¤µ¤ì¤Þ¤·¤¿¡£'.
¡¡¡¡] ensure: [Transcript show:'¡§ensure:¤ò¼Â¹Ô'; cr.].


14:33:11 | 3k1 | comments(0) | TrackBacks

March 27, 2005

¼«Í³¼«ºß Squeak ¥×¥í¥°¥é¥ß¥ó¥°¡§Â裶¾Ï ´ðËÜ¥¯¥é¥¹¥é¥¤¥Ö¥é¥êõ¸¡¨¡¤½¤Î£²(2)

Squeak Logo
¡ã¥¹¥È¥ê¡¼¥à¥¯¥é¥¹·²¡ä¡§¥¹¥È¥ê¡¼¥à¤Ï°ì³¤­¤Î¥Ç¡¼¥¿¤ò½èÍý¤¹¤ë¤â¤Î¤Ç¡¢É¬¤º¤Ê¤ó¤é¤«¤Î¥³¥ì¥¯¥·¥ç¥ó¡Ê¥¯¥é¥¹¤Î¥¤¥ó¥¹¥¿¥ó¥¹¡Ë¤ò¸µ¤ËÀ¸À®¤¹¤ë¤¬¡¢Ëؤɤξì¹ç¤Ï String ¤ò°·¤¦»þ¤ËÍøÍѤµ¤ì¤ë¡£

´ðËÜ¡ÊÆâÉô¡Ë¥¹¥È¥ê¡¼¥à¡§¥á¥â¥ê¾å¤Î¤ß¤Ë¸ºß¤¹¤ë¥¹¥È¥ê¡¼¥à
ReadStream¡§Æɤ߹þ¤ßÀìÍѤΥ¹¥È¥ê¡¼¥à¡£¡Öon:¡×¥¯¥é¥¹¥á¥½¥Ã¥É¤Î°ú¿ô¤Ë¥³¥ì¥¯¥·¥ç¥ó¥¯¥é¥¹¡ÊArray, String ¥¯¥é¥¹¤Ê¤É¡Ë¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤òÅϤ·¤ÆÀ¸À®¤Ç¤­¤ë¡£
¡¡Î㡧rs := ReadStream on: #(a b c d). rs inspect. "do it"
¤Þ¤¿¤Ï¡¢¥³¥ì¥¯¥·¥ç¥ó¥¯¥é¥¹¡ÊArray, String ¥¯¥é¥¹¤Ê¤É¡Ë¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤Ë¡¢¡ÖreadStream¡×¥á¥Ã¥»¡¼¥¸¤òÁ÷¤ë»ö¤Ç¤â¡¢À¸À®¤Ç¤­¤ë¡£
¡¡Î㡧rs := #(a b c d) readStream. "inspect it"¡¡rs := 'abcd' readStream. "inspect it"
next, next: ¥á¥Ã¥»¡¼¥¸¡§¥¹¥È¥ê¡¼¥à¤Ë¡Önext¡×¥á¥½¥Ã¥É¤òÁ÷¤ë»ö¤Ç¡¢Í×ÁǤò½ç¤Ë¼è¤ê½Ð¤»¤ë¡£¡Önext:¡×¥á¥Ã¥»¡¼¥¸¤Ç°ú¿ôʬ¤À¤±¼è¤ê½Ð¤¹»ö¤â¤Ç¤­¤ë¡£
¢¨¡§¥³¥ì¥¯¥·¥ç¥ó¤ÎºÇ¸å¤ÎÍ×ÁǤòĶ¤¨¤ë¤È¡Önil¡ÊÉÔÄê¡Ë¡×¤¬Ê֤äÆÍè¤ë¡£
¡¡Î㡧rs := '12345' readStream. rs next. "print it" rs next: 4. "print it" rs next. "print it"
ÄêÈ֤νñ¤­Êý¡§¡ÖwhileFalse:¡×¥á¥½¥Ã¥É¤ò»È¤¤¡¢¥¹¥È¥ê¡¼¥à¤Ë¡ÖatEnd¡×¥á¥½¥Ã¥É¤òÁ÷¤Ã¤ÆȽÄꤹ¤ë¡£
¡¡Î㡧rs := 'Hello Squeak!' readStream. [rs atEnd] whileFalse: [Transcript space; show: rs next]. "do it"
upToEnd ¥á¥Ã¥»¡¼¥¸¡§next Åù¤ÇÆɤ߹þ¤ß¸å¡¢ºÇ¸å¤Þ¤ÇÁ´¤Æ¼è¤ê½Ð¤¹»þ¤Ë»ÈÍѤ¹¤ë¡£
¡¡Î㡧rs := 'Hello Squeak!' readStream. rs next:6. rs upToEnd. "print it"
contents ¥á¥Ã¥»¡¼¥¸¡§next Åù¤ÇÆɤ߹þ¤ó¤À°ÌÃ֤˴ط¸¤Ê¤¯¡¢ºÇ½é¤«¤éºÇ¸å¤Þ¤ÇÁ´¤Æ¼è¤ê½Ð¤¹»þ¤Ë»ÈÍѤ¹¤ë¡£
¡¡Î㡧rs := 'Hello Squeak!' readStream. rs next:6. rs contents. "print it"
position, position: , reset¥á¥Ã¥»¡¼¥¸¡§¸½ºß¤ÎÆɤ߼è¤ê°ÌÃÖ¤òposition¤Ç³Îǧ¡¢positon: ¤ÇÆɤ߼è¤ê°ÌÃÖ¤òÀèƬ¤«¤é¤ÎÀäÂÐÃͤÇÀßÄꤹ¤ë»ö¤¬¤Ç¤­¤ë¡£position: ¤Î°ú¿ô¤¬¥¹¥È¥ê¡¼¥à¤ÎÍ×ÁǤòĶ¤¨¤ë¾ì¹ç¤Ï¥¨¥é¡¼¡£ reset¤Çposition¤ÎÃͤò¥¼¥í¤ËÌ᤻¤ë¡£
¡¡Î㡧rs := 'Hello Squeak!' readStream. rs next:6. rs position. "print it" rs position:12. rs next. "print it" rs reset. rs position. "print it"
skip: ¥á¥Ã¥»¡¼¥¸¡§¸½ºß¤ÎÆɤ߼è¤ê°ÌÃÖ¤«¤éÁêÂÐŪ¤ËÆɤ߼è¤ê°ÌÃÖ¤ò»ØÄê¤Ç¤­¤ë¡£Éé¤ÎÃͤÇÌá¤ë»ö¤â¤Ç¤­¤ë¡£¥¹¥È¥ê¡¼¥à¤ÎÍ×ÁÇ¿ô¤òĶ¤¨¤¿¤ê¡¢¥¼¥í°Ê²¼¤Ë¤Ê¤ë¤È¥¨¥é¡¼¡£
¡¡Î㡧rs := 'Hello Squeak!' readStream. rs next:6. rs skip:6. rs next. "print it" rs skip:-6. rs next. "print it"
upTo: ¥á¥Ã¥»¡¼¥¸¡§°ú¿ô¤ÎÍ×ÁǤޤǤò¼è¤ê½Ð¤¹¡£position¤ÎÃͤϡ¢°ìÃפ·¤¿Í×ÁǤˤʤ롣°ú¿ô¤È°ìÃפ¹¤ëÍ×ÁǤ¬Ìµ¤±¤ì¤ÐºÇ¸å¤Þ¤Ç¼è¤ê½Ð¤¹¡£
¡¡Î㡧rs := 'Hello Squeak!' readStream. rs upTo:(Character space). "print it" rs upTo:(Character space). "print it"
skipTo: ¥á¥Ã¥»¡¼¥¸¡§°ú¿ô¤ÎÍ×ÁǤޤÇposition¤ò°ÜÆ°¤¹¤ë¤À¤±¡£upTo¤ÎÍͤˡ¢Í×ÁǤòÊÖ¤µ¤Ê¤¤¡£
¡¡Î㡧rs := 'Hello Squeak!' readStream. rs skipTo:(Character space). rs position. "print it"
peek ¥á¥Ã¥»¡¼¥¸¡§next¥á¥Ã¥»¡¼¥¸¤ÈƱ¤¸¤¯¡¢¼¡¤ÎÍ×ÁǤò¼è¤ê½Ð¤¹¤¬¡¢position¤òÊѲ½¤µ¤»¤Ê¤¤¡£
¡¡Î㡧rs := 'Hello Squeak!' readStream. rs next. rs position. "print it" rs peek. "print it" rs position. "print it"

WriteStream¡§½ñ¤­¹þ¤ßÀìÍѤΥ¹¥È¥ê¡¼¥à¡£
on: ¥á¥Ã¥»¡¼¥¸¡§on: ¥¯¥é¥¹¥á¥½¥Ã¥É¤Î°ú¿ô¤Ë¡¢½ñ¤­¹þ¤à¤ª¤ª¤è¤½¤ÎÍ×ÁÇ¿ô¤ò»ý¤Ã¤¿¥³¥ì¥¯¥·¥ç¥ó¥¯¥é¥¹¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤ò»ØÄꤷ¤Æ¡¢¥¹¥È¥ê¡¼¥à¤òºîÀ®¤¹¤ë¡£
ºÇ½é¤Ë»ØÄꤷ¤¿Í×ÁÇ¿ô¤òĶ¤¨¤ëÍ×ÁǤò½ñ¤­¹þ¤ó¤À¾ì¹ç¤Ç¤â¡¢¼«Æ°¤Ç³ÈÄ¥¤µ¤ì¤ë¤Î¤ÇÍ×ÁÇ¿ô¥¼¥í¤Ç¤â¹½¤ï¤Ê¤¤¤¬¡¢³ÈÄ¥ºî¶È¤¬É¬Íפʰ١¢¤½¤Îʬưºî¤¬ÃÙ¤¯¤Ê¤ë¡£
¡¡Î㡧Í×ÁÇ¿ô¥¼¥í¤ÇºîÀ®¡§WriteStream on: ''. "inspect it"
¡¡Î㡧Í×ÁÇ¿ô¤ò»ØÄꤷ¤ÆºîÀ®¡§WriteStream on: (Array new:10). "inspect it"
with: ¥á¥Ã¥»¡¼¥¸¡§on: ¥á¥Ã¥»¡¼¥¸¤ÈƱ¤¸¤¯¡¢°ú¿ô¤ËÅϤ·¤¿¥³¥ì¥¯¥·¥ç¥ó¤Ç¥¹¥È¥ê¡¼¥à¤òºîÀ®¤¹¤ë¤¬¡¢on: ¤Ç¤Ï¥¹¥È¥ê¡¼¥à¤ËÍ×ÁǤòÄɲ乤ë¤È¾å½ñ¤­¤µ¤ì¤ë¤Î¤ËÂФ·¡¢with: ¤ÇºîÀ®¤·¤¿¥¹¥È¥ê¡¼¥à¤ÏºÇ½é¤ËÅϤ·¤¿¥³¥ì¥¯¥·¥ç¥ó¤òÊÝ»ý¤·¤Æ¡¢¤½¤Î¸å¤í¤ËÍ×ÁǤ¬Äɲ䵤ì¤ë¡£
¡¡on: ¤ÎÎ㡧WriteStream on: (Array new:5). "inspect it"
¡¡with: ¤ÎÎ㡧WriteStream on: (Array new:5). "inspect it"
on: ¤È with: ¤ÇºîÀ®¤·¤¿¥¹¥È¥ê¡¼¥à¤Ç¤Ï¡¢Í×ÁǤ¬Äɲ䵤ì¤ë°ÌÃÖ¤ò¼¨¤¹ position ¤ÎÃͤ¬°ã¤Ã¤Æ¤¤¤ë»ö¤¬Ê¬¤«¤ë¡£¤Þ¤¿¡¢on: ¤ËÅϤ·¤¿°ú¿ô¤¬°ÕÌ£¤ÎÍ­¤ë¥³¥ì¥¯¥·¥ç¥ó¤Ç¤â¡¢¼è¤ê½Ð¤¹»ö¤¬¤Ç¤­¤Ê¤¤ÍͤˤʤäƤ¤¤ë¡Ê¾å½ñ¤­¤µ¤ì¤Æ¤·¤Þ¤¦¤«¤é¡©¡Ë¡£
¡¡on: ¤ÎÎ㡧(WriteStream on: 'Hello Squeak') contents. "print it"
¡¡with: ¤ÎÎ㡧(WriteStream on: 'Hello Squeak') contents. "print it"
nextPut: ¥á¥Ã¥»¡¼¥¸¡§°ú¿ô¤ËÍ×ÁǤò°ì¤Ä»ØÄꤷ¤Æ¡¢¥¹¥È¥ê¡¼¥à¤ËÄɲ乤ë»ö¤¬¤Ç¤­¤ë¡£
¡¡Î㡧ws := WriteStream on: ''. ws nextPut: $a. ws nextPut: Character space. ws nextPut: $A. ws contents. "print it"
nextPutAll: ¥á¥Ã¥»¡¼¥¸¡§°ú¿ô¤Ë¥³¥ì¥¯¥·¥ç¥ó¡Ê¤Î¥¤¥ó¥¹¥¿¥ó¥¹¡Ë¤ò»ØÄꤷ¤Æ¡¢¥¹¥È¥ê¡¼¥à¤ËÄɲ乤ë»ö¤¬¤Ç¤­¤ë¡£
¡¡Î㡧ws := WriteStream on: ''. ws nextPutAll: 'Hello'. ws nextPut: Character space. ws nextPutAll: 'Squeak!'. ws contents. "print it"


17:18:14 | 3k1 | comments(0) | TrackBacks

¼«Í³¼«ºß Squeak ¥×¥í¥°¥é¥ß¥ó¥°¡§Â裶¾Ï ´ðËÜ¥¯¥é¥¹¥é¥¤¥Ö¥é¥êõ¸¡¨¡¤½¤Î£²(1)

Squeak Logo
ʸ»úÎ󥯥饹·²¡§String, Character
¡ãString¡ä¡§String¥¯¥é¥¹¤ÏCollection¥¯¥é¥¹¤Î¥µ¥Ö¥¯¥é¥¹¤Î°Ù¡¢¥¤¥Æ¥ì¡¼¥È·Ï¥×¥í¥È¥³¥ë¤¬»ÈÍѤǤ­¤ë¡£String¥¯¥é¥¹¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤Ï¡¢¥·¥ó¥°¥ë¥¯¥©¡¼¥Æ¡¼¥·¥ç¥ó¤Ç°Ï¤ó¤À¥ê¥Æ¥é¥ë¡Ö'ʸ»úÎó'¡×¤ÇºîÀ®¤Ç¤­¤ë¡£
ʸ»úÎó¤ÎÏ¢·ë¡§¡Ö,¡×¥«¥ó¥Þ¥á¥Ã¥»¡¼¥¸¤Çʸ»úÎó¤òÏ¢·ë¤Ç¤­¤ë¡£¡¡Î㡧'abcdef' ,'123456'. "print it"
¢¨¡§Ê¸»ú¡ÊCharacter¡Ë¤ÏCollection¥¯¥é¥¹¤Î¥µ¥Ö¥¯¥é¥¹¤Ç¤Ï¤Ê¤¤¤Î¤Ç¡¢¥«¥ó¥Þ¥á¥Ã¥»¡¼¥¸¤ÇÏ¢·ë¤Ç¤­¤Ê¤¤¡£asString¥á¥Ã¥»¡¼¥¸¤Ç¥­¥ã¥¹¥È¤¹¤ëɬÍפ¬Í­¤ë¡£
ʸ»úÎó¤ÎÈæ³Ó¡§¡Ö=¡×¤Çʸ»úÎóƱ»Î¤òÈæ³Ó¤Ç¤­¤ë¡£ ¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È¤ÎÂçʸ»ú¾®Ê¸»ú¤ò¶èÊ̤·¤Ê¤¤¤ÇÈæ³Ó¤¹¤ë¡ÖsameAs¡§¡×¥á¥Ã¥»¡¼¥¸¤âÍ­¤ë¡£¡¡Î㡧'Squeak' = 'squeak'. "print it"¡¡'Squeak' sameAs:'squeak'. "print it"
ʸ»úÎó¤Î¥Þ¥Ã¥Á¡§¡Ömatch:¡×¥á¥Ã¥»¡¼¥¸¤Çʸ»úÎó¤ÎÉôʬ¥Þ¥Ã¥Á¤òȽÃǤǤ­¤ë¡£¥Þ¥Ã¥Á¤¹¤ë¤Ètrue¡¢¥Þ¥Ã¥Á¤·¤Ê¤¤¤Èfalse¤òÊÖ¤¹¡£¡¡È½ÃǤκݡ¢Âçʸ»ú¾®Ê¸»ú¤Ï¶èÊ̤µ¤ì¤º¡¢¡Ö*¡×¤¬0ʸ»ú°Ê¾å¤ÎǤ°Õ¤Îʸ»úÎ󡢡Ö#¡×¤¬Ç¤°Õ¤Î£±Ê¸»ú¤Ë¤Ê¤ë¡£¡¡Î㡧'h#llo sque*' match:'Hello Squeak!'. "print it"
ʸ»úÎó¤Î¸¡º÷¡§¡Ö¡Ê¸¡º÷¤µ¤ì¤ëʸ»úÎó¡Ë findString:¡Ê¸¡º÷¤¹¤ëʸ»úÎó¡Ë startingAt:¡Ê¸¡º÷³«»Ï°ÌÃ֡ˡץá¥Ã¥»¡¼¥¸¤¬»È¤¨¤ë¡ÊÂçʸ»ú¾®Ê¸»ú¤Ï¶èÊ̤µ¤ì¤ë¡Ë¡£¡¡Î㡧'Hello Squeak' findString:'Squeak' startingAt:5. "print it"
¶èÀÚ¤êʸ»ú¤Çʬ³ä¡§¡Ö¡Êʸ»úÎó¡Ë findToTokens:'¡Ê¶èÀÚ¤êʸ»ú¡Ë'¡×¥á¥Ã¥»¡¼¥¸¤¬»È¤¨¤ë¡£¡¡Î㡧'Hello Squeak' findTokens:$e. "print it"¡¡'Hello/Squeak:!' findTokens:'/:'. "print it"
ʸ»úÎó¤ÎÃÖ´¹¡§¡Ö¡Êʸ»úÎó¡Ë copyReplaceAll:¡Ê¸¡º÷ʸ»úÎó¡Ë with:¡ÊÃÖ´¹Ê¸»úÎó¡Ë¡×¥á¥Ã¥»¡¼¥¸¤¬»È¤¨¤ë¡£Ìá¤êÃͤÏÃÖ´¹¤µ¤ì¤¿Ê¸»úÎó¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤Ç¡¢¥ª¥ê¥¸¥Ê¥ë¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤ÏÊѹ¹¤µ¤ì¤Ê¤¤¡£¡¡Î㡧'Hello world!' copyReplaceAll:'world' with:'Squeak'. "print it"

¡ãCharacter¡ä¡§¥ê¥Æ¥é¥ë¡Ö$¡Êʸ»ú¡Ë¡×¤Ç¥¤¥ó¥¹¥¿¥ó¥¹¤òºîÀ®¤Ç¤­¤ë¡£¡¡Character¥¯¥é¥¹¤Î¥¯¥é¥¹¥á¥½¥Ã¥É¥«¥Æ¥´¥ê¡Öaccessing untypeable characters¡×¤Ë¡¢¥ê¥Æ¥é¥ë¤Ç¤ÏÀ¸À®¤·¤Ë¤¯¤¤¥¹¥Ú¡¼¥¹¤ä¥¿¥Ö¤òÀ¸À®¤¹¤ë¥á¥Ã¥»¡¼¥¸¤¬Í­¤ë¡£¡¡Î㡧Character space inspect. "do it"
¥¢¥¹¥­¡¼¥³¡¼¥É¤«¤éʸ»ú¤òÀ¸À®¡§¥¯¥é¥¹¥á¥½¥Ã¥É¡Övalue:¡×¥á¥Ã¥»¡¼¥¸¤Ë¥¢¥¹¥­¡¼¥³¡¼¥É¤ò»ØÄꤷ¤Æ¡¢Ê¸»ú¤òÀ¸À®¤Ç¤­¤ë¡£¡¡Î㡧Character value:65. "print it" Character value:(65+32). "print it"
ʸ»ú¤«¤é¥¢¥¹¥­¡¼¥³¡¼¥É¤òÆÀ¤ë¡§¥¤¥ó¥¹¥¿¥ó¥¹¥á¥½¥Ã¥É¡ÖasciiValue¡×¥á¥Ã¥»¡¼¥¸¤ò»È¤¦¡£¡¡Î㡧$z asciiValue. "print it"
ʸ»úÎó¤Ø¤ÎÊÑ´¹¡§¥ª¥Ö¥¸¥§¥¯¥È¤òʸ»úÎó¤ËÊÑ´¹¤¹¤ë¤Ë¤Ï¡¢¡ÖasString¡×¥á¥Ã¥»¡¼¥¸¤ò»ÈÍѤ¹¤ë¡£¡¡Î㡧12345 asString. "inspect it"¡¡Time now asString. "inspect it"
Squeak¤Î¿¸À¸ìÂбþ¡§MultiString (AbstractString¤Î¥µ¥Ö¥¯¥é¥¹) ¤È MultiCharacter (Character¤Î¥µ¥Ö¥¯¥é¥¹) ¤¬Í­¤ë¡£
¤³¤ì¤é¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤Ï¡¢ÆüËܸì¤Ê¤É¤Î¥Þ¥ë¥Á¥Ð¥¤¥Èʸ»úÎó¤äʸ»ú¤òºîÀ®¤·¤¿»þ¤Ëºî¤é¤ì¤ë¡£¡¡Î㡧'ÆüËܸì' "inspect it"¡¡'ÆüËܸì' last. "inspect it"


13:44:01 | 3k1 | comments(0) | TrackBacks

March 13, 2005

¼«Í³¼«ºß Squeak ¥×¥í¥°¥é¥ß¥ó¥°¡§Â裵¾Ï ´ðËÜ¥¯¥é¥¹¥é¥¤¥Ö¥é¥êõ¸¡¨¡¤½¤Î£±

Squeak Logo
¡ã¥Ö¥í¥Ã¥¯¡ä¡§¥Ö¥í¥Ã¥¯¤Ï¡ÖBlockContext¡×¥¯¥é¥¹¤«¤éºî¤é¤ì¤ë¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢Ã±¤Ê¤ëµ­¹æ¤Ç¤Ï¤Ê¤¤¡£
¡¦[ ]¤È½ñ¤¯¤À¤±¤Ç¥¤¥ó¥¹¥¿¥ó¥¹¤¬ºîÀ®¤µ¤ì¤ë¡£[ ] value ¤È¡Övalue¡×¥á¥Ã¥»¡¼¥¸¤òÁ÷¤ë¤È¥Ö¥í¥Ã¥¯Æâ¤Îʸ¤¬¼Â¹Ô¤µ¤ì¤ë¡£¡Êvalue¥á¥Ã¥»¡¼¥¸¤¬Á÷¤é¤ì¤ë¤Þ¤Ç¥Ö¥í¥Ã¥¯Æâ¤Ï¼Â¹Ô¤µ¤ì¤Ê¤¤¡£¡Ë
Î㡧valueTest := [1 + 2]. Transcript cr; show: valueTest value. Áª¤ó¤Ç"do it"¤¹¤ë¤È¡¢Transcript¤Ë£³¤¬É½¼¨¤µ¤ì¤ë¡£
¡¦°ú¿ôÉÕ¤­¥Ö¥í¥Ã¥¯¤Ï¡¢[:°ú¿ô| ]¤È½ñ¤¯¡£[ :°ú¿ô| °ú¿ô] value: 'xxx' ¤Èvalue: ¥á¥Ã¥»¡¼¥¸¤Ç°ú¿ô¤ËÃͤòÅϤ»¤ë¡£
Î㡧[:arg | arg + 1] value: 1. ¤ò"inspect it"¤¹¤ë¤È¡¢SmallInteger¡§£²¤¬Ê֤äÆÍè¤ë¡£
¢¨¡§Squeak¤Ç¤Ï¡Övalue: value: value: value:¡×¤È£´¤Ä¤Î°ú¿ô¤Þ¤ÇÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë¡£¤½¤ì°Ê¾å¤Î°ú¿ô¤Î¾ì¹ç¤ÏÇÛÎó¤òÅϤ¹¥á¥Ã¥»¡¼¥¸¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë¡£
Î㡧[:arg1 :arg2 | arg1 + arg2] value: 1 value: 2. ¤ò"inspect it"¤¹¤ë¤È¡¢SmallInteger¡§3¤¬Ê֤äÆÍè¤ë¡£
¡¦¥Ö¥í¥Ã¥¯Æâ¥ê¥¿¡¼¥ó [¢¬ ] ¤Ï¡¢¥Ö¥í¥Ã¥¯¤ÎÃæ¤Ç¡Ö¢¬¡Ê^¥­¥ã¥ì¥Ã¥È¤ÇÆþÎϤ¹¤ë¡Ë¡×¤ò½ñ¤¯¤È¡¢¤É¤ó¤Ê¤Ë¥Ö¥í¥Ã¥¯¤¬¥Í¥¹¥È¡ÊÆþ¤ì»Ò¡Ë¤µ¤ì¤Æ¤¤¤Æ¤â¡¢¤½¤³¤Ç½èÍý¤ò½ªÎ»¤·¤Æ¥Ö¥í¥Ã¥¯¤«¤é³°¤ËÈ´¤±½Ð¤¹¡£¡Ê¥Ö¥í¥Ã¥¯¤ò°ì¤Ä¤À¤±È´¤±½Ð¤¹½èÍý¤ÏSqueak¤Ë¤Ï̵¤¤¡£¡Ë

¡ãÆüÉդȻþ´Ö¡ä¡§
Date¥¯¥é¥¹¡§ÆüÉÕ¤òɽ¤¹¥¯¥é¥¹¡£É¸½à¤Î½ñ¼°¤Ï DDMMYYYY¡ÊÆü·îǯ¡Ë new¤Ç¤Ï¤Ê¤¯¡¢Date today ¤Ê¤É¤ò»ÈÍѤ¹¤ë¡£
Time¥¯¥é¥¹¡§»þ´Ö¤òɽ¤¹¥¯¥é¥¹¡£É¸½à¤Î½ñ¼°¤Ï hour:minute:second am/pm ¡Ê»þ¡§Ê¬¡§Éà ¸áÁ°¡¿¸á¸å¡Ë¡£ new¤Ç¤Ï¤Ê¤¯¡¢Time now ¤Ê¤É¤ò»ÈÍѤ¹¤ë¡£

¡ã¥³¥ì¥¯¥·¥ç¥ó¥¯¥é¥¹·²¡ä¡§¥³¥ì¥¯¥·¥ç¥ó¥¯¥é¥¹·²¤Î¥ë¡¼¥È¤Ï Collection¡ÊÃê¾Ý¡Ë¥¯¥é¥¹
½ç½ø̵¤·¥³¥ì¥¯¥·¥ç¥ó¡§Bag, Set
¡¦Bag¡§Ãæ¿È¤Ë¤É¤ó¤Ê¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤âÆþ¤ì¤é¤ì¤ë¡£½ç½ø¤Ï̵´Ø·¸¤Ç¡¢½ÅÊ£¤â£Ï£Ë¡£
¡¦Set¡§Bag¤ÈƱ¤¸¤Ç¤É¤ó¤Ê¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤âÆþ¤ì¤é¤ì¤ë¤¬¡¢½ÅÊ£¤ÏÉԲġ£
½ç½øÉÕ¤­¥³¥ì¥¯¥·¥ç¥ó¡§Array, OrderedCollection, SortedCollection
¡¦Array¡§½ç½øÉÕ¤­¤Ç¡¢ºîÀ®»þ¤Î¥µ¥¤¥º¤¬¸ÇÄê¤Î¥³¥ì¥¯¥·¥ç¥ó¡£¸Ä¡¹¤ÎÍ×ÁǤÏÊѹ¹¤Ç¤­¤ë¤¬¡¢Í×ÁÇ¿ô¤òÄɲῺï½ü¤Ç¤­¤Ê¤¤¡£¥ê¥Æ¥é¥ë #(Í×ÁÇ£± Í×ÁÇ£² ¡Ä) ¤ÇºîÀ®²Äǽ¡£
¡¦OrderedCollection¡§½ç½øÉÕ¤­¤Ç¥µ¥¤¥º²ÄÊѤΥ³¥ì¥¯¥·¥ç¥ó¡£ new¤Ç¥µ¥¤¥º¤Ê¤·¤òºîÀ®¤·¤Æ¡¢add: ¤ä addFirst:¤ÇÍ×ÁǤòÄɲòÄǽ¡£
¡¦SortedCollection¡§Í×ÁǤÎʤÙÂؤ¨¤ò¼«Æ°Åª¤Ë¹Ô¤¦¥³¥ì¥¯¥·¥ç¥ó¡£ ɸ½à¤Î¥½¡¼¥È½ç¤Ï <= ¤Ç¤ÎÈæ³Ó¡£ sortBlock: [:a :b | a > b]¤Ê¤É¤Ç¥½¡¼¥ÈÊýË¡¤ò»ØÄꤷ¤ÆSortedCollection¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤òÀ¸À®¤Ç¤­¤ë¡£
¥­¡¼ÉÕ¤­¥³¥ì¥¯¥·¥ç¥ó¡§Dictionary, IdentDictionary
¡¦Dictionary¡§¼­½ñ¤ÎÍͤˡ¢¡Ö¥­¡¼¡×¤È¡ÖÃ͡פΥڥ¢¤Ç¾ðÊó¤òÊÝ»ý¤¹¤ë¡Ê½ç½ø¤ÏÊݾڤµ¤ì¤Ê¤¤¡Ë¡£Dictionary¤Ï = ¤Ç¡Ö¥­¡¼¡×¤òÈæ³Ó¤¹¤ë¤¿¤á¡¢¥­¡¼¤Ë¤Ï¿ô»ú¤äʸ»úÎó¤Ê¤É¡¢= ¤ÇÈæ³Ó¤Ç¤­¤ë¤â¤Î¤ò»ÈÍѤ¹¤ë¡£
¡¦IdentDictionary¡§IdentDictionary ¤Ï¡¢== ¤Ç¡Ö¥­¡¼¡×¤òÈæ³Ó¤¹¤ë¡£ == ¤Ç¥ª¥Ö¥¸¥§¥¯¥È¡ÊVMÆâ¤Î¥Ý¥¤¥ó¥¿¡Ë¤òÈæ³Ó¤¹¤ë°Ù¡¢¸¡º÷¤Ï¹â®¤À¤¬¡¢¥­¡¼¤È¤·¤Æʸ»úÎ󤬻Ȥ¤Æñ¤¯¤Ê¤ë¡£¡Ê#¤Ç¥·¥ó¥Ü¥ë¤Ë¤¹¤ë¤Ê¤É¡¢¹©Éפ¬É¬Íס£¡Ë

¥³¥ì¥¯¥·¥ç¥ó¤ÎÊÑ´¹¡§Collection¥¯¥é¥¹¤Î¥¤¥ó¥¹¥¿¥ó¥¹¥á¥½¥Ã¥É¥«¥Æ¥´¥ê¡Öconverting¡×Æâ¤Ë¡Öas¡ã¥¯¥é¥¹Ì¾¡ä¡×¤Ç´ö¤Ä¤«ÊÑ´¹Íѥ᥽¥Ã¥É¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£¡Ö¥³¥ì¥¯¥·¥ç¥ó¥¯¥é¥¹¤Î¥¤¥ó¥¹¥¿¥ó¥¹ as¡ã¥¯¥é¥¹Ì¾¡ä¡×¤Ç¡¢Ãͤ¬¥³¥Ô¡¼¡¦ÊÑ´¹¤µ¤ì¡¢¡ã¥¯¥é¥¹Ì¾¡ä·¿¤Î¿·¤¿¤Ê¥¤¥ó¥¹¥¿¥ó¥¹¤¬Ê֤äÆÍè¤ë¡£

yourself¡§¥³¥ì¥¯¥·¥ç¥ó¥¯¥é¥¹¤Î¥¤¥ó¥¹¥¿¥ó¥¹¥á¥½¥Ã¥É¡Êadd:, at:put: ¤Ê¤É¡Ë¤Î¿¤¯¤Ï¡¢¤½¤ÎÌá¤êÃͤ¬¥ì¥·¡¼¥Ð¡Ê¥³¥ì¥¯¥·¥ç¥ó¥¯¥é¥¹¤Î¥¤¥ó¥¹¥¿¥ó¥¹¡Ë¤Ç¤Ï̵¤¯¡¢¥¤¥ó¥¹¥¿¥ó¥¹¥á¥½¥Ã¥É¡Êadd:, at:put: ¤Ê¤É¡Ë¤Î°ú¿ô¤Ë¤Ê¤Ã¤Æ¤¤¤ë°Ù¡¢yourself ¥á¥Ã¥»¡¼¥¸¤ò¡Ê¥«¥¹¥±¡¼¥É ; ¤ÎºÇ¸å¤Ë¡ËÁ÷¿®¤¹¤ë»ö¤Ç¡¢ÌÀ¼¨Åª¤Ë¥ì¥·¡¼¥Ð¼«¿È¤òÊÖ¤·¤¿¤¤»þ¤Ë»ÈÍѤ¹¤ë¡£
Î㡧
yourself¤¬Ìµ¤¤»þ¡§(Bag new) add: 1; add: 2; add: 3.¡§"inspect it"¤¹¤ë¤È¡¢add: 3¤Î°ú¿ô 3 ¤¬Ê֤ꡢ˾¤ó¤À·ë²Ì¤Ë¤Ê¤é¤Ê¤¤¡£
yourself¤¬Í­¤ë»þ¡§(Bag new) add: 1; add: 2; add: 3; yourself.¡§"inspect it"¤¹¤ë¤È¡¢ a Bag(1 2 3) ¤È˾¤ó¤À¤â¤Î¤Ë¤Ê¤ë¡£

¥¤¥Æ¥ì¡¼¥È¡Ê·«¤êÊÖ¤·¡Ë¥×¥í¥È¥³¥ë¡§¥³¥ì¥¯¥·¥ç¥ó¥¯¥é¥¹·²¤ÎÍ×ÁǤò¡¢·«¤êÊÖ¤·¼è¤ê½Ð¤¹¥á¥½¥Ã¥É¡£¡Ê°ÕÌ£¤Î»÷Ä̤俼곤­·²¤ò¥×¥í¥È¥³¥ë¤È¸Æ¤Ö¡Ë
¡¦do¡§¡ã¥³¥ì¥¯¥·¥ç¥ó¡ä do: [:each | ¡ã½èÍý¡ä]¡§¥³¥ì¥¯¥·¥ç¥ó¤«¤éϢ³¤·¤ÆÍ×ÁǤò¼è¤ê½Ð¤·¡¢¥Ö¥í¥Ã¥¯Æâ¤Î½èÍý¤ò¹Ô¤¦¡£
¡¦select¡§¡ã¥³¥ì¥¯¥·¥ç¥ó¡ä select: [:each | ¡ãÈæ³Ó¼°¡ä]¡§¥³¥ì¥¯¥·¥ç¥ó¤«¤é¼è¤ê½Ð¤·¤¿Í×ÁǤò¥Ö¥í¥Ã¥¯Æâ¤Î¼°¤ÇÈæ³Ó¤·¡¢true¤ÎÍ×ÁǤò¼è¤ê½Ð¤¹¡£
¡¦reject¡§select¤È¤ÏµÕ¤Ë¡¢¥Ö¥í¥Ã¥¯Æâ¤Î¼°¤ÇÈæ³Ó¤·¤¿·ë²Ì¤¬¡¢false¤ÎÍ×ÁǤò¼è¤ê½Ð¤¹¡£
¡¦detect¡§¥Ö¥í¥Ã¥¯Æâ¤Î¼°¤ÇÈæ³Ó¤·¡¢ºÇ½é¤Ëtrue¤Ë¤Ê¤Ã¤¿Í×ÁǤΤߤòÊÖ¤·¤Æ¡¢¤½¤³¤Ç½èÍý¤ò½ªÎ»¤¹¤ë¡£true¤ÎÍ×ÁǤ¬Ìµ¤±¤ì¤Ð¥¨¥é¡¼¡Êerror: 'Object is not in the collection.'¡Ë¤òÊÖ¤¹¡£¡¡¸«¤Ä¤«¤é¤Ê¤«¤Ã¤¿»þ¤Ë½èÍý¤ò¤µ¤»¤ë¤Ë¤Ï¡¢detect:ifNone: ¤ò»È¤¦¡£
¡¦collect¡§¡ã¥³¥ì¥¯¥·¥ç¥ó¡ä collect: [:each | ¡ã²Ã¹©½èÍý¡ä]¡§¥³¥ì¥¯¥·¥ç¥ó¤Î³ÆÍ×ÁǤËÂФ·¤Æ²Ã¹©½èÍý¤ò¹Ô¤¦¡£
¡¦inject:into¡§¡ã¥³¥ì¥¯¥·¥ç¥ó¡ä inject:¡ã½é´ü¥ª¥Ö¥¸¥§¥¯¥È¡ä [:obj :each | ¡ã½èÍý¡ä]¡§¥Ö¥í¥Ã¥¯Æâ°ú¿ô obj ¤Ë¤Þ¤º½é´ü¥ª¥Ö¥¸¥§¥¯¥È¤¬Æþ¤ê¡¢each¤Ë¥³¥ì¥¯¥·¥ç¥ó¤ÎºÇ½é¤Î¥ª¥Ö¥¸¥§¥¯¥È¤¬Æþ¤ê¡¢½èÍý¤ò¹Ô¤¦¡£¼¡¤Ë¡¢½èÍý¤Î·ë²Ì¤¬ obj ¤ËÆþ¤ê¡¢¥³¥ì¥¯¥·¥ç¥ó¤Î¼¡¤ÎÍ×ÁǤ¬each¤ËÆþ¤ê¡¢½èÍý¤ò¹Ô¤¦¡Ä¤Î·«¤êÊÖ¤·¤Ç¡¢¥³¥ì¥¯¥·¥ç¥ó¤ÎÍ×ÁǤ¬Ìµ¤¯¤Ê¤ë¤Þ¤Ç½èÍý¤¬Â³¤¯¡£
¡¦keysDo¡§¡ã¥Ç¥£¥¯¥·¥ç¥Ê¥ê¡ä keysDo: [:each | ¡ã½èÍý¡ä]¡§Dictionary·Ï¥³¥ì¥¯¥·¥ç¥ó¤Ç¡Ö¥­¡¼¡×¤ò¼è¤ê½Ð¤·¤Æ½èÍý¤¹¤ë¡£
¡¦valuesDo¡§¡ã¥Ç¥£¥¯¥·¥ç¥Ê¥ê¡ä valuesDo: [:each | ¡ã½èÍý¡ä]¡§¥Ç¥£¥¯¥·¥ç¥Ê¥ê¤«¤é¡¢¡ÖÃ͡פò¼è¤ê½Ð¤·¤Æ½èÍý¤¹¤ë¡£
¡¦keysAndValuesDo¡§¡ã¥Ç¥£¥¯¥·¥ç¥Ê¥ê¡ä keysAndValuesDo: [:key :value | ¡ã½èÍý¡ä]¡§¥Ç¥£¥¯¥·¥ç¥Ê¥ê¤«¤é¡Ö¥­¡¼¡×¤È¡ÖÃ͡פò¤½¤ì¤¾¤ì¼è¤ê½Ð¤·¤Æ½èÍý¤¹¤ë¡£
¡¦associationsDo¡§¡ã¥Ç¥£¥¯¥·¥ç¥Ê¥ê¡ä associationsDo: [:associations | ¡ã½èÍý¡ä]¡§Association¤Ï¡Ö¥­¡¼¡×¤È¡ÖÃ͡פΥڥ¢¤Ç¡¢¡Ö¥­¡¼ -&gt; Ã͡פȡÚ-&gt; ¡Û¥á¥Ã¥»¡¼¥¸¤ÇºîÀ®¤Ç¤­¤ë¡£ ºîÀ®¤µ¤ì¤¿¥¤¥ó¥¹¥¿¥ó¥¹¤«¤é¡Ö¥­¡¼¡×¤ò¼è¤ê½Ð¤¹¤Ë¤Ï¡Ökey¡×¥á¥½¥Ã¥É¤ò¡¢¡ÖÃ͡פò¼è¤ê½Ð¤¹¤Ë¤Ï¡Övalue¡×¥á¥½¥Ã¥É¤òÁ÷¤ë¡£


16:47:45 | 3k1 | comments(0) | TrackBacks