只显示主题贴

jiangshaolin 写道你们代码格式不太对吧. 什么意思?
  • 进入论坛 Ruby
module Has_inner_class def init_child obj class<<obj def init_outer outer @__outer=outer self end end obj.init_outer self end end class Aaa include Has_inner_class attr_accessor :name def put() aa=init_child("hello") class<&l ...
  • 进入论坛 Ruby
baryon 写道class Aaa Name = [] #attr_accessor :name def get_name Name[0] end def put(name) Name[0]=name aa="hello" class<<aa def print_hello STDOUT.puts self+Name[0] end end aa.prin ...
  • 进入论坛 Ruby
xiaoxizhen 写道你只是定义了一个变量,然后给变量追加了一个方法。动态追加方法, def和define_method的区别可以参考这边文章。http://ola-bini.blogspot.com/2008/05/dynamically-created-methods-in-ruby.html这里还有一篇中文的翻译。http://www.gotopeking.com/boards/1/topics/show/65对于你的需求,直接把外部的引用传过去就是最简单的方法了。如果你不相信我, rails里面有类似的lib\action_controller\routing\route_set. ...
  • 进入论坛 Ruby
superxielei 写道昨天晚上回家翻书看了看 class<<AnObj 这个是扩展了AnObj,并不是一个java思想中的内部类。 内部类应该是使用::实现的,这样才是内部类,他就可以直接使用超类的方法了。 看来需要另外一个思想来实现LZ需要的功能! 我称为内部类是因为这个类只是随着外面这个类的instance存在而存在的。
  • 进入论坛 Ruby
xiaoxizhen 写道edge_hh 写道 那有许多时候会挺不方便的啊。 要是在一个方法内定义一个class<<AnObj. 实际上这个obj应该默认包含外部object的一个引用的啊。只有外部的object存在,它才会存在 你这完全是照搬java的概念。 你定义的就是singleon方法, 放到哪里不行呀。 我说了,我的例子只是为了举例用的。 当然是我实际上有这个需求我才这么问的。
  • 进入论坛 Ruby
xiaoxizhen 写道ruby 没有内部类的概念呀。即使声明在内部的, 也只能按普通类的方式!那有许多时候会挺不方便的啊。要是在一个方法内定义一个class<<AnObj.实际上这个obj应该默认包含外部object的一个引用的啊。只有外部的object存在,它才会存在
  • 进入论坛 Ruby
phoenix520 写道 class Aaa attr_accessor :name def get_name @name end def put(name) self.name=name aa="hello" class<<aa def print_hello(outer_class) STDOUT.puts ...
  • 进入论坛 Ruby
liuqiang 写道class Aaa attr_accessor :name def Aaa.get_name() @@name end def put(name) @@name=name aa="hello" class<<aa def print_hello STDOUT.puts self + Aaa.get_name end end aa.print_hello end end z=Aaa.new z.put "pp"  自个看吧  谢谢楼上的解答。 但是,我需要访问的是 ...
  • 进入论坛 Ruby
class Aaa attr_accessor :name def get_name @name end def put(name) @name=name aa="hello" class<<aa def print_hello STDOUT.puts self+Aaa::get_name end end ...
  • 进入论坛 Ruby
edge_hh
搜索本博客
最近加入圈子
存档
最新评论