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.].


Posted by 3k1 at 02:33 P | from category: Squeak | TrackBacks
Comments
No comments yet
:

:

Trackbacks