ruby 1.1b9(98/02/27) [i386-freebsd2.2.5]ãå©çšãããŠããã£ãŠããã®ã§ã
ããã¡ãã£ãšå°ç³ã«ãã€ãŸãããæ°ãããã®ã§å ±åãããŠé ããŸãã
ïŒããããªãããã³ãŒããããã®ã§ã¡ãã£ãšé·ãã§ãã
rubyã«é¢ããŠã¯ãå
šãã®åå¿è
ãªã®ã§ç·Žç¿åé¡ãšããŠãèšå®ãã¡ã€ã«ãèªãã¯
ã©ã¹ã«ãã£ã¬ã³ãžããŠèŠãŸãããåçŽã«ãåæåã¡ãœããäžã§ãã¡ã€ã«ãèªã¿
蟌ãç°¡åãªãã®ã®ã¯ãã ã£ãã®ã§ããããã
-[ conf0.rb ]--------------------------------------------------------------
#!/usr/local/bin/ruby
class Conf < Hash
def initialize (name)
IO.foreach (name) {
next if /^$/o;
next if /^[ \t]*#/o;
$_.chomp!;
entry = split(/[ \t]+/);
self[entry[0]] = entry[1];
}
end
end
$conf = Conf.new("./test.conf");
$conf.each_pair {
| k, v |
print "key=#{k}, value=#{v}\n";
}
---------------------------------------------------------------------------
ãããå®è¡ããŠããäœãåºåããªããã§ããããæ¬¡ã®ããã«ãåæåã§ã¯èªã¿
蟌ã¿ã®åŠçãè¡ãããreadãšããã¡ãœãããäœã£ãŠåŒã³åºããŠãããšããŸãå
ãããã§ãã
-[ conf1.rb ]--------------------------------------------------------------
#!/usr/local/bin/ruby
class Conf < Hash
def initialize
super;
end
def read (name)
self[".notdef"] = "NOT DEFINED";
File.foreach (name) {
next if /^$/o;
next if /^[ \t]*#/o;
$_.chomp!;
entry = split(/[ \t]+/);
self[entry[0]] = entry[1];
}
end
end
$conf = Conf.new;
$conf.read("./test.conf");
$conf.each_pair {
| k, v |
print "key=#{k}, value=#{v}\n";
}
---------------------------------------------------------------------------
ã©ããåæåã®ã¡ãœãããæããŠããã§ãªããšåŒåºãç¡èŠãããŠãããããªæ
ãã§ããåå¿è
ã®ç§ãèŠèœãšããŠããTIPSããããã§ããããïŒãããšããã
ã®ãããªä»æ§ãªãã§ããããïŒ
ïŒããã仿§ãªãã°ãã§ããã°ã³ã³ãã€ã«æã®ãšã©ãŒã«ããŠæ¬²ããã®ã§ããã©ã
--
*------* ada...@okidata.co.jp
|人â§é·²| æ²ããŒã¿ 第äžç ç©¶æ
| <女> | å®é æ·³
|çâšç
|
*------*
ada...@tpegasus.lab.okidata.co.jp (Jun Adachi) writes:
|å®éïŒ æ²ããŒã¿ãšç³ããŸãã
|
|ruby 1.1b9(98/02/27) [i386-freebsd2.2.5]ãå©çšãããŠããã£ãŠããã®ã§ã
|ããã¡ãã£ãšå°ç³ã«ãã€ãŸãããæ°ãããã®ã§å ±åãããŠé ããŸãã
çµè«ããå
ã«ãããšHashã®newãinitializeãåŒã°ãªãã®ãåå ã§
ãïŒããã¯misfeatureãšåŒãã§ãè¯ãããã«æããŸãïŒ
1.1b0以éã§ã¯ä¿®æ£ããããã«æ€èšããŸãïŒ
ãŸã€ããšãããçš²èãããã©ãããã«ã¡ã¯ã
In article <7sbtukb...@sdd.tokyo-sc.toshiba.co.jp>
Inaba Hiroto <in...@sdd.tokyo-sc.toshiba.co.jp> writes:
initializeã¡ãœãããã®ãã®ãåŒã°ããŠãªãããã§ã. ãããªããšã
ruby 1.1b9ã§HashãArrayãStringã®subclassã§ã¯newããæã«initializeã¡ãœã
ãã¯åŒãã§ãããªãããã§ã.
ããã£ã±ããã£ã£ã£!ãã€ãæãã§ãã
Hashã®subclassã«ããªãã§, 以äžã®ããã«ã€ã³ã¹ã¿ã³ã¹å€æ°ã«Hashãæã€ãã
ã«ããã,
(ç¥)
ããŒããããããããšãdef xxx; @hash.xxx; endã ãã«ããããããããšå®
矩ããªããšãããªããã§ããããªãã§ããã(<- åãªããããŸãŸïŒ)
ãããã¯, Hashã®subclassã«ãããªã,
class Conf < Hash
def Conf.new(name)
me = super()
File.foreach (name) {
<ç¥>
me[entry[0]] = entry[1]
}
return me
end
end
(ç¥)
ããConf.newãæžãæããŠããŸãããã§ããããããããšãããŸãããããã
ã«ã¯æãè³ããŸããã§ããããšããããã¯ãããããŸããããŠé ããŸãã
newãšéã£ãŠinitializeã¯ã€ã³ã¹ã¿ã³ã¹ãè¿ããªãã®ã§ãã¹ãŒããŒã¯ã©ã¹ã®new
ãšinitializeããã©ãã§è¡ãããŠããããããŒããããã®ã§ããã
ãã ãnewã®çœ®ãæãã§å
šéšè§£æ±ºãããšãªããšããinitializeã®ç«å Žã£ãŠïŒã
ãšããããµãã¯ã©ã¹ã£ãŠãrubyã®å Žåã¯ã¯ã©ã¹åã®ãšã€ãªã¢ã¹ïŒã€ã³ã¹ã¿ã³ã¹
倿°ïŒããšãçåãæ¹§ããŠæ¥ãŠããŸããŸãã
ïŒãããã ããã©ãã ãšãããã ãã®ç¥èãçµéšããªããåã«çŸç¶ãçè§£ãã
ïŒãã ããªã®ã§ããã
In article <lvhg4cd...@picachu.netlab.co.jp>
Yukihiro Matsumoto <ma...@netlab.co.jp> writes:
ãŸã€ããš ããã²ãã§ã
(ç¥)
çµè«ããå
ã«ãããšHashã®newãinitializeãåŒã°ãªãã®ãåå ã§
ãïŒããã¯misfeatureãšåŒãã§ãè¯ãããã«æããŸãïŒ
1.1b0以éã§ã¯ä¿®æ£ããããã«æ€èšããŸãïŒ
äœè ããããã®ãè¿äºãããããšãããããŸãã
ä¿®æ£äºå®ã«å ããŠé ãããšããããšã§ãäžã«æžãããããªçåã«ãç§ãäžè¬åº¶
æ°:-)ã¯ããŸãã£ããé ã䜿ãå¿
èŠãªãããã§ããããã§ãã
ä»åŸãäžããªã質åãããããç¥ããŸãããããããããé¡ãèŽããŸã(_O_)ã
ïŒæ¬¡ã®ããŒãžã§ã³ãRubyæ¬ã®åºçããšãã«éŠããã«ãã«ãšäŒžã°ããŠãããŸãã
ada...@tpegasus.lab.okidata.co.jp (Jun Adachi) writes:
|å®éïŒ æ²ããŒã¿ã§ãã
| Hashã®subclassã«ããªãã§, 以äžã®ããã«ã€ã³ã¹ã¿ã³ã¹å€æ°ã«Hashãæã€ãã
| ã«ããã,
|ããŒããããããããšãdef xxx; @hash.xxx; endã ãã«ããããããããšå®
|矩ããªããšãããªããã§ããããªãã§ããã(<- åãªããããŸãŸïŒ)
ãããªããªãã«delegate.rbãïŒ
require 'delegate' # ãããš
class Conf<SimpleDelegator # ãããš
def initialize (name)
@hash = {}
File.foreach (name) {
<ç¥>
@hash[entry[0]] = entry[1]
}
super(@hash) # ãããéã
end
end
ã³ã¬ã ãã§Confã«ã¯Hashã®å
šã¡ãœããã远å ãããŸãïŒ
# ãïŒã§ã1.1b9_05ãŸã§ã®delegate.rbã«ã¯ã€ãã¬ãŒã¿ãåŒã¹ãªã
# ãšèšããã°ãâŠïŒ
|ããConf.newãæžãæããŠããŸãããã§ããããããããšãããŸãããããã
|ã«ã¯æãè³ããŸããã§ããããšããããã¯ãããããŸããããŠé ããŸãã
Conf.newãæžãæããã£ãŠã®ã¯ãµãã¯ã©ã¹ãäœãæã«ç Žç¶»ããããš
ãå€ããã§ãå§ãããŠãŸããïŒãïŒä»åã¯ãããããªãã§ããïŒ
| çµè«ããå
ã«ãããšHashã®newãinitializeãåŒã°ãªãã®ãåå ã§
| ãïŒããã¯misfeatureãšåŒãã§ãè¯ãããã«æããŸãïŒ
|
| 1.1b0以éã§ã¯ä¿®æ£ããããã«æ€èšããŸãïŒ
ããã¯1.1c0ã®ééãã§ãïŒããä¿®æ£ãã¡ãããŸããããïŒããã
ãåºãå®éšãªãªãŒã¹ã®1.1b9_07ã§ã¯æ¡çšãããŠãŸãïŒ
# ã£ãŠå®éšãªãªãŒã¹ã®ããšããããªã«å€§ã
çã«æžããŠè¯ãã®ãïŒ
ãŸã€ããš ããã²ã /:|)
In article <lvemzfc...@picachu.netlab.co.jp>
Yukihiro Matsumoto <ma...@netlab.co.jp> writes:
ãŸã€ããš ããã²ãã§ã
å床ã®åŸ¡æç€ºããããšãããããŸãã
ada...@tpegasus.lab.okidata.co.jp (Jun Adachi) writes:
|ããŒããããããããšãdef xxx; @hash.xxx; endã ãã«ããããããããšå®
|矩ããªããšãããªããã§ããããªãã§ããã(<- åãªããããŸãŸïŒ)
ãããªããªãã«delegate.rbãïŒ
ããããããŒã俺ã¯ççã«ã«ã³ããŒããŠããã£ã£ã£ã
ïŒæšæ¥ã挫ç»å«è¶ã§ããã¹ã¿ãŒããæ¢åå
šéšãèªãã§æ¥ãç©ã§ã衚çŸã倧ãã
ïŒã«ãªã£ãŠãããŸãã
ãŸã ãèšèªæšæºã®ã¢ãžã¥ãŒã«ïŒã¯ã©ã¹ããææ¢ãã®ç¶æ³ãªãã§ãæ·»ä»ãããŠã
ãã©ã€ãã©ãªã®æ¹ã¯ãå
šç¶ãã§ãã¯ããŠããªãã®ã§ããã
ïŒããããã¯ãRubyæ¬ãåŸ ã¡é ããã
ã³ã¬ã ãã§Confã«ã¯Hashã®å
šã¡ãœããã远å ãããŸãïŒ
# ãïŒã§ã1.1b9_05ãŸã§ã®delegate.rbã«ã¯ã€ãã¬ãŒã¿ãåŒã¹ãªã
# ãšèšããã°ãâŠïŒ
ããããHashãArrayã®ãµãã¯ã©ã¹ãšããŠã¯ããã§ãŒã¬ããªå¶çŽãªã®ã§ã¯ããã
Conf.newãæžãæããã£ãŠã®ã¯ãµãã¯ã©ã¹ãäœãæã«ç Žç¶»ããããš
ãå€ããã§ãå§ãããŠãŸããïŒãïŒä»åã¯ãããããªãã§ããïŒ
ãšããããšã§ããã¯ãåœé¢ã¯ãã¡ãã®ããã§ããããšããããã¯ãããã«ãµã
ã¯ã©ã¹ãäœãå¿
èŠã¯ãªãã§ãããã
| çµè«ããå
ã«ãããšHashã®newãinitializeãåŒã°ãªãã®ãåå ã§
| ãïŒããã¯misfeatureãšåŒãã§ãè¯ãããã«æããŸãïŒ
|
| 1.1b0以éã§ã¯ä¿®æ£ããããã«æ€èšããŸãïŒ
ããã¯1.1c0ã®ééãã§ãïŒããä¿®æ£ãã¡ãããŸããããïŒããã
ãåºãå®éšãªãªãŒã¹ã®1.1b9_07ã§ã¯æ¡çšãããŠãŸãïŒ
# ã£ãŠå®éšãªãªãŒã¹ã®ããšããããªã«å€§ã
çã«æžããŠè¯ãã®ãïŒ
ããŒã£ãšãããã¯å®éšãªãªãŒã¹ãã¹ãåå ã®ãèªãã§ãããïŒ:-)
ä»åã®ãããšãããQ&A圢åŒã§ãŸãšããŠã¿ãŸãããæ·»åããé¡ãããŸãã
--
Q. ããã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹å€æ°ãšããŠãArrayãStringãªã©ã®å€ãã®ã¡ãœã
ãããã€ã¯ã©ã¹ã®ãªããžã§ã¯ããå®çŸ©ããŠããŸãããã®ã€ã³ã¹ã¿ã³ã¹å€æ°ã®ã
ãã«ããããã®ã¯ã©ã¹ãæã£ãŠããæç¶ããã¹ãŠãåå®çŸ©ããå¿
èŠãããã®ã§
ããããïŒ
A. ãããªããªãã«ã¯ãæšæºé
åžããã±ãŒãžã«å«ãŸããŠããdelegate.rbããã
ãŸããäŸãã°ãã€ã³ã¹ã¿ã³ã¹å€æ°ãšããŠ@hashããã€ã¯ã©ã¹Confã®å Žåãæ¬¡ã®
ããã«èšè¿°ããŸãã
require 'delegate' # delegateã®å©çšå®£èš
class Conf<SimpleDelegator # SimpleDelegatorã®ãµãã¯ã©ã¹ãšããŠå®çŸ©
def initialize (name)
@hash = {}
<ç¥> # @hashã®åæåãªã©ãèšè¿°ããŠäžãã
super(@hash) # @hashã®ã¡ãœãããselfã«ç»é²
end
end
ã³ã¬ã ãã§Confã«ã¯Hashã®ã¯ã©ã¹ã¡ãœãã(ex. initialize)ãé€ããå
šã¡ãœã
ãã远å ãããŸãã
ada...@tpegasus.lab.okidata.co.jp (Jun Adachi) writes:
|å®éïŒ æ²ããŒã¿ã§ãã
| ãããªããªãã«delegate.rbãïŒ
|
|ããããããŒã俺ã¯ççã«ã«ã³ããŒããŠããã£ã£ã£ã
|
|ïŒæšæ¥ã挫ç»å«è¶ã§ããã¹ã¿ãŒããæ¢åå
šéšãèªãã§æ¥ãç©ã§ã衚çŸã倧ãã
|ïŒã«ãªã£ãŠãããŸãã
ãéŽæšåäžåº§ã§éãã§ããïŒ ^^;;;
|ïŒããããã¯ãRubyæ¬ãåŸ ã¡é ããã
ã¡ããïŒé ããŠãŸãïŒãããŸããïŒ
| # ãïŒã§ã1.1b9_05ãŸã§ã®delegate.rbã«ã¯ã€ãã¬ãŒã¿ãåŒã¹ãªã
| # ãšèšããã°ãâŠïŒ
|
|ããããHashãArrayã®ãµãã¯ã©ã¹ãšããŠã¯ããã§ãŒã¬ããªå¶çŽãªã®ã§ã¯ããã
ããçŽããŸããããååŒããŠäžããïŒ
|ããŒã£ãšãããã¯å®éšãªãªãŒã¹ãã¹ãåå ã®ãèªãã§ãããïŒ:-)
ãåå ã¯å€§æè¿ããŸãïŒãã®å Žå ruby-dev ã¡ãŒãªã³ã°ãªã¹ãã«ã
å
¥ã£ãŠé ãããšãã£ãšå¬ããã§ãïŒ
|ä»åã®ãããšãããQ&A圢åŒã§ãŸãšããŠã¿ãŸãããæ·»åããé¡ãããŸãã
ãããŸããïŒå©ãããŸãïŒ
|ã³ã¬ã ãã§Confã«ã¯Hashã®ã¯ã©ã¹ã¡ãœãã(ex. initialize)ãé€ããå
šã¡ãœã
|ãã远å ãããŸãã
å®éã¯Confã§å®çŸ©ãããŠããã¡ãœãããšåç§°ãè¡çªããªãHashã®å
š
ã¡ãœããã§ãïŒããšïŒidãšequal?ãš__getobj__ã远å ããŸããïŒ
ããããinitializeã¯ã¯ã©ã¹ã¡ãœããã§ã¯ãªãïŒã€ã³ã¹ã¿ã³ã¹ã¡ãœã
ãã§ãïŒã¯ã©ã¹ã¡ãœããnewãã鿥çã«åŒã°ããŠããã ãã§ãïŒ
ãŸã€ããš ããã²ã /:|)
ãããããäœãæããŠãããããfj.lang.rubyãäœã£ãŠããããŸããã
In article <lvd8evc...@picachu.netlab.co.jp>
Yukihiro Matsumoto <ma...@netlab.co.jp> writes:
ãŸã€ããš ããã²ãã§ã
(ç¥)
ãéŽæšåäžåº§ã§éãã§ããïŒ ^^;;;
Unixç°å¢ã§ããšãrogue, hack, nethackã§åºãŠæ¥ãŠãŸããªãæè¿ã¯ãWindows
ã®äžã®ã€ã³ã¿ãŒãããç°å¢ã«ãããããã§ããã©ããã'e'ãã·ã³ãã«ãšããŠ
ããŠããžãã«è§Šããšåã£ãŠåããªããªã匷æªããå
±æããŠããŸããMicrosoft
ã«ã¯ãããã¹ã¿ãŒããã®æèªè
ãå€ããã§ããããïŒ:-P
ïŒWindowsäžã®å¥Žãã¿ããªã§ãéŽæšåäžåº§ã§éããšåŒãã§ãããã(^_^)
ada...@tpegasus.lab.okidata.co.jp (Jun Adachi) writes:
|ããŒã£ãšãããã¯å®éšãªãªãŒã¹ãã¹ãåå ã®ãèªãã§ãããïŒ:-)
ãåå ã¯å€§æè¿ããŸãïŒãã®å Žå ruby-dev ã¡ãŒãªã³ã°ãªã¹ãã«ã
å
¥ã£ãŠé ãããšãã£ãšå¬ããã§ãïŒ
ã¯ããäœãã§ãããä»äžã€äžå®ã§ã¯ãããŸãããé£çµ¡å ãªã©æããŠäžãããŸãã
|ã³ã¬ã ãã§Confã«ã¯Hashã®ã¯ã©ã¹ã¡ãœãã(ex. initialize)ãé€ããå
šã¡ãœã
|ãã远å ãããŸãã
å®éã¯Confã§å®çŸ©ãããŠããã¡ãœãããšåç§°ãè¡çªããªãHashã®å
š
ã¡ãœããã§ãïŒããšïŒidãšequal?ãš__getobj__ã远å ããŸããïŒ
ããããã¯ãåæã«æ³åã§ãã®èšã£ãŠã¯ãããã§ãããããã§ããã£ããã§ãã
ããããinitializeã¯ã¯ã©ã¹ã¡ãœããã§ã¯ãªãïŒã€ã³ã¹ã¿ã³ã¹ã¡ãœã
ãã§ãïŒã¯ã©ã¹ã¡ãœããnewãã鿥çã«åŒã°ããŠããã ãã§ãïŒ
ããŒããç§ã®äžå匷ãã°ããŠãŸãããã
Q&A圢åŒç¬¬ïŒçã
--
Q. ããã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹å€æ°ãšããŠãArrayãStringãªã©ã®å€ãã®ã¡ãœã
ãããã€ã¯ã©ã¹ã®ãªããžã§ã¯ããå®çŸ©ããŠããŸãããã®ã€ã³ã¹ã¿ã³ã¹å€æ°ã®ã
ãã«ããããã®ã¯ã©ã¹ãæã£ãŠããæç¶ããã¹ãŠãåå®çŸ©ããå¿
èŠãããã®ã§
ããããïŒ
A. ãããªããªãã«ã¯ãæšæºé
åžããã±ãŒãžã«å«ãŸããŠããdelegate.rbããã
ãŸããäŸãã°ãã€ã³ã¹ã¿ã³ã¹å€æ°ãšããŠ@hashããã€ã¯ã©ã¹Confã®å Žåãæ¬¡ã®
ããã«èšè¿°ããŸãã
require 'delegate' # delegateã®å©çšå®£èš
class Conf<SimpleDelegator # SimpleDelegatorã®ãµãã¯ã©ã¹ãšããŠå®çŸ©
def initialize (name)
@hash = {}
<ç¥> # @hashã®åæåãªã©ãèšè¿°ããŠäžãã
super(@hash) # @hashã®ã¡ãœãããselfã«ç»é²
end
end
ã³ã¬ã ãã§ãConfã§å®çŸ©ããã¡ãœãããšååã®è¡çªããªãHashã®å
šã¡ãœãããã
Confã®ã€ã³ã¹ã¿ã³ã¹ã§å©çšå¯èœã«ãªããŸãããã ããäŸå€ãšããŠid, equal?å
ã³SimpleDelegatorå
éšã§å®çŸ©ããŠãã__getobj__ããããŸããid, equal?ã¯ã
Objectã§å®çŸ©ãããŠãããæãåºæ¬çãªã¡ãœããã§ãã£ãŠDelegatorã䜿çšã
ãªããŠãå©çšå¯èœãšãªã£ãŠããŸãã
--
ïŒããã§ããã«ãããªãdelegateãObjectã®ã¡ãœãããšããŠå®è£
ãããŠããªã
ïŒã®ã§ããïŒããšããè€æ°ã®ã€ã³ã¹ã¿ã³ã¹å€æ°ã®ã¡ãœãããdelegateããããš
ïŒããã®ã§ããããŸããããŸããããšãåãç¶ãããšãMixinã®æ¹ã«è©±ããã£
ïŒãŠãé ããèªãã§çè§£ã§ããFAQã®äžéšã«ãªã£ããããã®ã§ããããã
ada...@tpegasus.lab.okidata.co.jp (Jun Adachi) writes:
|å®éïŒ æ²ããŒã¿ã§ãã
| |ããŒã£ãšãããã¯å®éšãªãªãŒã¹ãã¹ãåå ã®ãèªãã§ãããïŒ:-)
|
| ãåå ã¯å€§æè¿ããŸãïŒãã®å Žå ruby-dev ã¡ãŒãªã³ã°ãªã¹ãã«ã
| å
¥ã£ãŠé ãããšãã£ãšå¬ããã§ãïŒ
|
|ã¯ããäœãã§ãããä»äžã€äžå®ã§ã¯ãããŸãããé£çµ¡å
ãªã©æããŠäžãããŸãã
ãã®æ°ã«ãªããŸããã ruby...@netlab.co.jp ãŸã§ã¡ãŒã«ãäžã
ãïŒå
容ã¯èªå·±ç޹ä»ãšããããã§ãããïŒå®éã«ã¯ãªãã§ãæ§ããŸ
ããã±ãïŒruby-devã§ã¯rubyã®ä»æ§å€æŽããã°ïŒå®éšçã«é¢ãã話
é¡ãªã©ãåãæ±ãããŠããŸãïŒã¡ãªã¿ã«rubyã«é¢ããäžè¬çãªè©±é¡
ãæ±ãã¡ãŒãªã³ã°ãªã¹ã ruby-listãšããã®ããããŸãïŒãã¡ãã¯
ruby...@netlab.co.jpãŸã§ã¡ãŒã«ãïŒãã¡ããå
容ã¯åããŸããïŒ
|ã³ã¬ã ãã§ãConfã§å®çŸ©ããã¡ãœãããšååã®è¡çªããªãHashã®å
šã¡ãœãããã
|Confã®ã€ã³ã¹ã¿ã³ã¹ã§å©çšå¯èœã«ãªããŸãããã ããäŸå€ãšããŠid, equal?å
|ã³SimpleDelegatorå
éšã§å®çŸ©ããŠãã__getobj__ããããŸããid, equal?ã¯ã
|Objectã§å®çŸ©ãããŠãããæãåºæ¬çãªã¡ãœããã§ãã£ãŠDelegatorã䜿çšã
|ãªããŠãå©çšå¯èœãšãªã£ãŠããŸãã
ããæ£ç¢ºã«èšãã°(ãã€ãããŠããããªãã)ïŒid ãš equal? ã¯ãª
ããžã§ã¯ããåå®ããåºæ¬çãªã¡ãœãããªã®ã§è»¢éãã¹ãã§ãªãã
ãïŒãã®ããã«ãªã£ãŠãŸãïŒããããŸã§è»¢éãã¡ãããšè»¢éå
ã®ãª
ããžã§ã¯ãããªã«ãã®ã ãåãããªããªã£ã¡ããããã§ãïŒå®éã¯
ä»ã«ã転éãã¡ããããã¡ãœããã¯ãããããªæ°ãããŸããïŒãã
ãã远å ããããšæããŸã(ããå æžãªå¥Ž ^^;;;)
ãŸã€ããš ããã²ã /:|)
ãããã©ãã现ãããšããã«æ°ãåããŸããã§ãäœåºŠããæéãšãããŸãã
In article <lv90pic...@picachu.netlab.co.jp>
Yukihiro Matsumoto <ma...@netlab.co.jp> writes:
ãŸã€ããš ããã²ãã§ã
ada...@tpegasus.lab.okidata.co.jp (Jun Adachi) writes:
|å®éïŒ æ²ããŒã¿ã§ãã
|ã¯ããäœãã§ãããä»äžã€äžå®ã§ã¯ãããŸãããé£çµ¡å ãªã©æããŠäžãããŸãã
ãã®æ°ã«ãªããŸããã ruby...@netlab.co.jp ãŸã§ã¡ãŒã«ãäžã
ãïŒå
容ã¯èªå·±ç޹ä»ãšããããã§ãããïŒå®éã«ã¯ãªãã§ãæ§ããŸ
ããã±ãïŒruby-devã§ã¯rubyã®ä»æ§å€æŽããã°ïŒå®éšçã«é¢ãã話
é¡ãªã©ãåãæ±ãããŠããŸãïŒã¡ãªã¿ã«rubyã«é¢ããäžè¬çãªè©±é¡
ãæ±ãã¡ãŒãªã³ã°ãªã¹ã ruby-listãšããã®ããããŸãïŒãã¡ãã¯
ruby...@netlab.co.jpãŸã§ã¡ãŒã«ãïŒãã¡ããå
容ã¯åããŸããïŒ
ãããªããdevã§ã¯æ·å±
ãé«ãããªãã§ããŸãã¯listã®æ¹ã«åå ããããšã«ã
ãŸããããã«é¢ããŠã¯ããŸãåŸçšã¡ãŒã«ã«ãŠã
|ã³ã¬ã ãã§ãConfã§å®çŸ©ããã¡ãœãããšååã®è¡çªããªãHashã®å
šã¡ãœãããã
|Confã®ã€ã³ã¹ã¿ã³ã¹ã§å©çšå¯èœã«ãªããŸãããã ããäŸå€ãšããŠid, equal?å
|ã³SimpleDelegatorå
éšã§å®çŸ©ããŠãã__getobj__ããããŸããid, equal?ã¯ã
|Objectã§å®çŸ©ãããŠãããæãåºæ¬çãªã¡ãœããã§ãã£ãŠDelegatorã䜿çšã
|ãªããŠãå©çšå¯èœãšãªã£ãŠããŸãã
ããæ£ç¢ºã«èšãã°(ãã€ãããŠããããªãã)ïŒid ãš equal? ã¯ãª
ããžã§ã¯ããåå®ããåºæ¬çãªã¡ãœãããªã®ã§è»¢éãã¹ãã§ãªãã
ãïŒãã®ããã«ãªã£ãŠãŸãïŒ
ããã ãããšã¯æ³åããŠããã§ãããããããã®ãFAQã¬ãã«ã®ãŠãŒã¶(->èªå
ãã ãïŒ)ã«èšã£ãŠãããã®ããªãšèºèºããçµæã§ãããèŠçŽããšç¢ºãã«å€ã§
ããã
ããããŸã§è»¢éãã¡ãããšè»¢éå
ã®ãª
ããžã§ã¯ãããªã«ãã®ã ãåãããªããªã£ã¡ããããã§ãïŒå®éã¯
ä»ã«ã転éãã¡ããããã¡ãœããã¯ãããããªæ°ãããŸããïŒãã
ãã远å ããããšæããŸã(ããå æžãªå¥Ž ^^;;;)
ãŸã ãå¢ããå¯èœæ§ãããã®ã§ããããããããããŸã§FAQã®äžã§ã¯äŸç€ºã«æ¢
ãã圢ã«ããŠããã
ãã®è©±é¡FAQ第3ç(ã ã£ãã£ã)
--
Q. ããã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹å€æ°ãšããŠãArrayãStringãªã©ã®å€ãã®ã¡ãœã
ãããã€ã¯ã©ã¹ã®ãªããžã§ã¯ããå®çŸ©ããŠããŸãããã®ã€ã³ã¹ã¿ã³ã¹å€æ°ã®ã
ãã«ããããã®ã¯ã©ã¹ãæã£ãŠããæç¶ããã¹ãŠãåå®çŸ©ããå¿
èŠãããã®ã§
ããããïŒ
A. ãããªããªãã«ã¯ãæšæºé
åžããã±ãŒãžã«å«ãŸããŠããdelegate.rbããã
ãŸããäŸãã°ãã€ã³ã¹ã¿ã³ã¹å€æ°ãšããŠ@hashããã€ã¯ã©ã¹Confã®å Žåãæ¬¡ã®
ããã«èšè¿°ããŸãã
require 'delegate' # delegateã®å©çšå®£èš
class Conf<SimpleDelegator # SimpleDelegatorã®ãµãã¯ã©ã¹ãšããŠå®çŸ©
def initialize (name)
@hash = {}
<ç¥> # @hashã®åæåãªã©ãèšè¿°ããŠäžãã
super(@hash) # @hashã®ã¡ãœãããselfã«ç»é²
end
end
ã³ã¬ã ãã§ãConfã§å®çŸ©ããã¡ãœãããšååã®è¡çªããªãHashã®å
šã¡ãœãããã
Confã®ã€ã³ã¹ã¿ã³ã¹ã§å©çšå¯èœã«ãªããŸãããã ããdelegateãããªãã¡ãœã
ãããããŸããããã«ã¯ãDelegatoråã³ãã®ãµãã¯ã©ã¹ã§å©çšããŠããã¡ãœã
ããšãid, equal?ãªã©ã®ããã«ããããdelegateãè¡ã£ãŠã¯ãŸãããã®ã«åé¡
ã§ããŸãã詳现ã«é¢ããŠã¯ããææã¡ã®delegate.rbãåç
§ããŠç¢ºãããŠäžããã