From: keiju@... (ÀÐÄÍ·½¼ù ) Date: 1997-01-29T14:51:23+09:00 Subject: [ruby-list:1934] Re: [Dist] Mutex module ã‘ã„ã˜ã‚…ï¼ SHLジャパンã§ã™. In [ruby-list :01929 ] the message: "[ruby-list:1929] Re: [Dist] Mutex module ", on Jan/29 11:55(JST) matz@caelum.co.jp (Yukihiro Matsumoto) writes: >|1. Hash#delete(elm) {...} >ãµã«ã‚ƒ? Hash#deleteãŒã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ã¨ã—ã¦å‘¼ã°ã‚ŒãŸæ™‚ã«ã¯å‰Šé™¤ã™ã‚‹ >ã¹ãè¦ç´ ãŒãªã„時ã«è©•価ã•れるã¯ãšã§ã™ï¼Žã“ã®ä»•様ã¯çŸ³å¡šã•ã‚“ã®è¦ >求ã ã£ãŸã¯ãšã§ã™ãŒï¼Ž > ># delete:ifNone:ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã§ã™ã­ï¼Ž > >è¦æ±‚ã—ãŸæœ¬äººãŒé–“é•ãˆã‚‹ã‚ˆã†ãªä»•様ã¯å¤–ãã†ã‹ãªã‚(イテレータ㧠>ãªãã™ã‚‹). ãã†ãªã‚“ã§ã™ã‚ˆ. ç§ãŒãƒªã‚¯ã‚¨ã‚¹ãƒˆã—ãŸã‚“ã§ã™ã‚ˆã­... 失礼ã—ã¾ã—ãŸ(__ # 原ã•んフォローã‚りãŒã¨ã†ã”ã–ã„ã¾ã™(__;;; ã§ã‚‚, 正直ã„ã£ã¦ã“ã®ã¾ã¾ã§ã¯ã‚ã¾ã‚Šä½¿ã„ã‚„ã™ãã„ã‚“ã§ã™ã‚ˆã­... value = hash.delete(key) {...} if value ... end 削除ã—ãŸè¦ç´ ã«å¯¾ã—ã¦ä½•ã‹å‡¦ç†ã‚’行ãªã„ãŸã„ã¨ã™ã‚‹ã¨, リターン値ãŒãªã‚“ã§ã‚ ã‚‹ã‹æ¡ä»¶åˆ¤æ–­ãŒå¿…è¦ã«ãªã‚Šã¾ã™ã‚ˆã­... hash.delete(key, if_none_block) if_exist_block ã®ã»ã†ãŒè‰¯ã‹ã£ãŸãªã‚ãªã‚“ã¦æ€ã£ãŸã‚Šã‚‚ã—ã¦ã„ã¾ã™(*^^;;; ã‚ãã†ãã†. begin value = hash.delete(key) {break} ã‚ã£ãŸå ´åˆã®å‡¦ç† ensure å¾Œå‡¦ç† end ãªã‚“ã¦æ›¸ãã‹ãŸã¯ã§ããªã„ã‚“ã§ã™ã‚ˆã­ãˆ... ã“れãŒã‚ã‚‹ã¨çµæ§‹å¥‡éº—ã«æ›¸ã‘ã‚‹ã‚“ ã§ã™ãŒ... begin value = hash.delete(key) {Raise "Nothong"} ã‚る時ã®å‡¦ç† rescue ãªã„時ã®å‡¦ç† ensure å¾Œå‡¦ç† end ã¯ã¡ã‚‡ã£ã¨å¤§ã’ã•ã‹ãªã¨... >|2. Hash#[], key?... >忘れã¦ã„ã¾ã—ãŸãŒã‚‚ã¨ã‚‚㨠Hashã®ã‚ˆã†ãªhash値ã®å¤‰ã‚るオブジェ >クトã¯ã‚­ãƒ¼ã«ã§ããªã„ã®ã§ã—ãŸï¼Žã—ã‹ã—,ã“ã®å ´åˆã«ã¯hash値ãŒå¤‰ >ã‚ã£ã¦ã„ãªã„ã®ã§ï¼Œã“れもãã£ã¨ãƒã‚°ã§ã—ょã†ï¼Ž ã†ãƒ¼ã‚“. Hashã®hash値ã£ã¦ã©ã†ã„ã†é¢¨ã«å®šç¾©ã•れã¦ã„ãŸã®ã ã‚ã†? >ã“れã¯ã©ã†ã™ã‚‹ã‹æ‚©ã¾ã—ã„ã¨ã“ã‚ã§ã™ãŒï¼ŒHashをキーã«ã§ããªã„ã® >ã‚‚ãªã‚“ã‹ä¸ä¾¿ãªæ°—ãŒã™ã‚‹ã®ã§ï¼Œeql?ã¨hashã®å®šç¾©ã‚’見直ã—ã¾ã—ょã†ï¼Ž >Hashをキーã¨ã—ãŸå ´åˆã«ã¯ã‚ªãƒ–ジェクトã®åŒä¸€æ€§ã§ä¸€è‡´ã‚’見るã“㨠>ã«ã—ã¦è‰¯ã„ã§ã™ã­(内容ã§ã¯ãªã). ãˆãˆ. ã‚‚ã¡ã‚ã‚“!! ã¨ã“ã‚ã§, Hashã§ã®æ¯”較(eql?)ãŒåŒä¸€æ€§(equal?)ã¨é•ã£ã¦ã„るクラスã¯ä½•ãŒã‚ ã‚‹ã‚“ã§ã—ょã†ã‹? åŒå€¤æ€§ã§æ¯”較ã™ã‚‹ãƒãƒƒã‚·ãƒ¥ä»¥å¤–ã«åŒä¸€æ€§ã§æ¯”較ã™ã‚‹ãƒãƒƒã‚·ãƒ¥ã®ã‚¯ãƒ©ã‚¹ã‚‚ã‚ã£ãŸ æ–¹ãŒè‰¯ã„ã®ã§ã¯?? ã¡ãªã¿ã«Smalltalkã«ã¯ã‚りã¾ã—ãŸ. >|3. Mutex#try_lock >ã°ã‚ŒãŸã‹ï¼Žå®Ÿã¯æ˜¨æ—¥æ°—ãŒã¤ã„ã¦ä¿®æ­£ã—ã¦ã„ã¾ã—ãŸï¼Žæ¬¡ã®ãƒªãƒªãƒ¼ã‚¹ã§ >ã¯ç›´ã£ã¦ã„ã¾ã™ï¼Ž ã˜ã‚ƒã‚. ã“ã¡ã‚‰ã‚‚ãれã«åˆã‚ã›ã¾ã™. 4. モジュールã®ä½œã‚Šæ–¹ã®æ–¹é‡ モジュールã®ä½œã‚Šæ–¹ã®æ–¹é‡ã«ã¤ã„ã¦è³ªå•ã—ã¾ã™. moduleã¯ä»–ã®ã‚¯ãƒ©ã‚¹ã«mix-inã•れるã‚ã‘ã§ã™ã‚ˆã­. ãã†ã™ã‚‹ã¨ãƒ¡ã‚½ãƒƒãƒ‰åã®ç«¶ åˆãŒå½“ç„¶èµ·ã“り得ã¾ã™ã‚ˆã­. moduleã®è¨­è¨ˆæ–¹é‡ã¨ã—ã¦ã¯ã“ã®ç«¶åˆã‚’ã©ã®ã‚ˆã†ã« 考ãˆã‚Œã°è‰¯ã„ã®ã§ã—ょã†? a. メソッドåã®ç«¶åˆã¯include/extendã—ãŸå´ã§è§£æ¶ˆã™ã‚‹. b. モジュールå´ã§ãã®ã‚ˆã†ãªä»•組ã¿ã‚’用æ„ã—ã¦ãŠã. 今回ã®Mutexモジュール(Mutex_m)ã®ä½¿ã„æ–¹ã¯, 既存クラスã«extendã™ã‚‹ã“ã¨ã‚‚ 多ã„ã¨æ€ã„ã¾ã™. ã“ã®ã‚ˆã†ãªå ´åˆ(a)ã®æ–¹é‡ã¯ãƒ¦ãƒ¼ã‚¶ã«ã¯ãªã‹ãªã‹è¾›ã„ã®ã§ã¯ ãªã„ã‹ãªã¨æ€ã†ã®ã§ã™ãŒã©ã†ãªã‚“ã§ã—ょã†? __ ..........................................石塚 圭樹@SHLジャパン(æ ª)... ------------->アドレス変ã‚りã¾ã—ãŸ!! e-mail: keiju@shljapan.co.jp <----