дµÄÒ»¸öinterÀàÄ£·ÂrubyÕûÊýµÄÐÐΪ
ÎÒÃÇÖªµÀrubyÖжÔÓÚÕûÊýµÄ[],[]=,<<,>>²Ù×÷ÊÇÕë¶ÔÓÚ¶þ½øÖƵÄÖµÀ´ÔËËãµÄ¡£
ÎÒÏÖÔÚдһ¸öÕë¶ÔÊ®½øÖÆÊý²Ù×÷µÄÀ࣬ӵÓÐÕûÊýµÄËùÓз½·¨£¬ÈçÏÂ:
class InterEx
def initialize(val=0)
@val=val
end
def to_s
@val.to_s
end
def [](idx)
self.to_s[idx].to_i
end
def []=(idx,val)
s=self.to_s
s[idx] = val.to_s
@val=s.to_i
end
def coerce(other)
[other,@val]
end
def <<(v)
return InterEx.new(@val) if v==0
InterEx.new(@val*10**v)
end
def >>(v)
return InterEx.new(@val) if v==0
s=self.to_s
s=s[0..(-1*v-1)]
InterEx.new(s.to_i)
end
def method_missing(mtd,*args)
InterEx.new(@val.send mtd,*args)
end
end
ruby»¹ÌṩÁËdelegate»úÖÆ±ãÓÚ´úÀíÒ»¸öÀ࣬±ÈÈçÒªÏë´úÀíFixnumÀ࣬
¿ÉÒÔÕâôд:
require 'delegate'
class InterEx<DelegateClass(Fixnum)
...
end
Ïà¹ØÎĵµ£º
Ruby£¬Ò»ÖÖ為簡單¿ì½ÝÎï¼þ導Ïò編³Ì£¨ÃæÏò¶ÔÏó³ÌÐòÉè¼Æ£©¶ø創µÄ½Å±¾語ÑÔ£¬ÔÚ20ÊÀ¼Í90Äê´úÓÉÈÕ±¾ÈËËɱ¾Ðк루¤Þ¤Ä¤â¤È¤æ¤¤Ò¤í£¯Yukihiro Matsumoto£©¿ª·¢£¬×ñÊØGPLÐÒéºÍRuby License¡£ËüµÄÁé¸ÐÓëÌØÐÔÀ´×ÔÓÚPerl¡¢Smalltalk¡¢Eiffel¡¢Ada ÒÔ¼° Lisp ......
rubygems
Ruby on Rails ÊÇÒ»¸ö¿ÉÒÔʹÄ㿪·¢£¬²¿Êð£¬Î¬»¤ web Ó¦ÓóÌÐò±äµÃ¼òµ¥µÄ¿ò¼Ü¡£
¡¡¡¡RubyµÄ×÷ÕßÓÚ1993Äê2ÔÂ24ÈÕ¿ªÊ¼±àдRuby£¬Ö±ÖÁ1995Äê12Ô²ÅÕýʽ¹«¿ª·¢²¼ÓÚfj£¨ÐÂÎÅ×飩¡£Ö®ËùÒÔ³ÆÎªRuby£¬ÊÇÒòΪPerlµÄ·¢ÒôÓë6Ôµĵ®Éúʯpearl£¨ÕäÖ飩Ïàͬ£¬Òò´ËRubyÒÔ7Ôµĵ®Éúʯruby£¨ºì±¦Ê¯£©ÃüÃû¡£railsÔÚÓ¢ÎÄÖÐÊÇÀ¸¸ËµÄ ......
¡¡×î½ü£¬ÎÒÐèÒªÒ»ÖÖ¿ìËÙ¿ª·¢ÓïÑÔ£¬Ä¿Ç°ÖËÊÖ¿ÉÈȵĿìËÙ¿ª·¢ÓïÑÔ¾ÍÊÇPythonºÍRubyÁË¡£RubyºÍPython¶¼ÊǷdz£ÓÅÐãµÄ½Å±¾ÓïÑÔ£¬ËäÈ»ËûÃǵÄÉè¼ÆÕÜѧ¼¸ºõÍêÈ«²»Í¬£¬µ«ËûÃÇЧÂʲ¶à£¬Ó¦ÓÃÁìÓòÒ²²î¾à²»´ó£¬ËƺõÌìÉú¾ÍÊǾºÕù¶ÔÊÖ¡£µ½µ×Ñ¡ÄǸöÄØ?ÎÒ×öÁËһЩ¼òµ¥µÄ±È½Ï¡£
¡¡¡¡ÎÒÃDZȽ ......
class Point
@x = 1
@y = 2
def initialize(x,y)
@x,@y = x,y
end
end
´úÂëÖеÄ@x£¬@yΪʵÀý±äÁ¿£¬ÊµÀý±äÁ¿Ö»¶ÔselfµÄ»·¾³Æð×÷Óã¬Òò´ËinitializeÍâÃæµÄ@x=1£¬@y=2Ö»¶ÔÀà±¾ÉíÆð×÷Ó㬶ø·½·¨ÄÚ²¿£¬µÄ@x£¬@yÊǶԶÔÏóµÄʵÀýÆð×÷Óõġ£
class Point
include Enumerable
def initialize(x ......