编程C,C ++,Java,PHP,Ruby,图灵,VB
计算机科学加拿大 
编程C,C ++,Java,PHP,Ruby,图灵,VB  

用户名:    Password: 
  登记 登记    
 一点数量的成分术魔法
指数 -> 编程,Ruby. -> 红宝石提交
查看上一个主题 可打印的版本下载主题利率主题订阅本主题私人信息刷新页面 查看下一个主题
作者 信息
WTD.




 邮政 发布: 2008年12月14日星期五3:13  帖子主题:一小位的成分术魔法

红宝石:
班级 <<Object
        define_method :delegate |ivar, *mnames|
                mnames. 每个 |mname|
                        instance_eval
                                define_method mname |*args|
                                       instance_variable_get..(:"@#{ivar}"). 发送 (mname,* args)
                                结尾
                        结尾
                结尾
        结尾
结尾


一个简单的演示:

红宝石:
班级 Foo
        delegate :bar, :abs

        def initialize
                @bar = -1
        结尾
结尾


现在:

红宝石:
Foo。 新的 .ABS


会产生:

代码:
1
赞助
赞助
 赞助
 赞助
吉安尼




 邮政 发布: 2008年8月14日星期四凌晨3:19  帖子主题:Re:一小位的成分术魔法

训练很酷,这种东西让我感到沉着在里面的温暖和模糊。
吉安尼




 邮政 发布: 孙12月14日,2008年3:44 AM  帖子主题:Re:一小位的成分术魔法

我完全没有的小贡献 WTD. '代码:

红宝石:
班级 <<Object
  define_method :delegalias | ivar,alias_name,甲基|
    instance_eval
     define_method alias_name. | * args |
       instance_variable_get..(:"@#{ivar}"). 发送 (meth,* args)
      结尾
    结尾
  结尾
结尾


演示:
红宝石:
班级 Foo
  delegalias :person, : to_s. , :inspect
 
  def 初始化
    @person = {:name => “约翰·史密斯”, :id => 1402, :email => [email protected]}
  结尾
结尾


红宝石:
Foo。 新的 . to_s.


收益率:
代码:
"{:name=>\"John Smith\", :email=>\"[email protected]\", :id=>1402}"
WTD.




 邮政 发布: 孙12月14日,2008年3:48 AM  帖子主题:Re:一小位的成分术魔法

最优秀。
虫子




 邮政 发布: 孙12月14日,2008年4:40  帖子主题:Re:一小位的成分术魔法

TRES混淆了。

我完全迷失了,虽然在一个星期内(或已经是一周?)的Ruby体验,这是要预期的。课程是什么<<对象做? '委托'做什么?
WTD.




 邮政 发布: 孙12月14日,2008年5:35 PM  帖子主题:Re:一小位的成分术魔法

在Ruby类中是对象。通过使用“类<<对象“我在课堂上工作而不是它的实例。

至于委托,它只是一种方法,而是一个在课堂上,而不是它的实例。它所做的是在类的实例上定义一种方法。

代码:
>> class <<Object
>>         define_method :代表do | ivar,* mnames |
?>                 Mnames.each Do | Mname |
?>                         instance_eval do
?>                                 define_method mname do | * args |
?>                                         instance_variable_get.(:"@#{ivar}").send(mname, *args)
>>                                 end
>>                         end
>>                 end
>>         end
>> end
=> #<Proc:[email protected](irb):2>
>> class Foo
>>    def initialize
>>       @bar = -32
>>    end
>> end
=> nil
>> Foo.delegate(:bar, :abs)
=> [:abs]
>> a = Foo.new
=> #<Foo:0x82e9160 @bar=-32>
>> a.abs
=> 32
>>


等效手册代码是:

代码:
课堂foo
   def abs(*args)
      @bar.abs(*args)
   end
结尾
cow




 邮政 发布: 2019年2月18日星期一2:33 AM  帖子主题:Re:一小位的成分术魔法

是一个很好的知识
从上一个显示帖子:   
    指数 -> 编程,Ruby. -> 红宝石提交
查看上一个主题 告诉一个朋友可打印的版本下载主题利率主题订阅本主题私人信息刷新页面 查看下一个主题

11  [ 7 Posts ]
跳到:    


Style:  
搜索: