查看: 2129|回复: 2

[已经解决] module里怎么使用attr_accessor?

[复制链接]
梦石
0
星屑
65
在线时间
389 小时
注册时间
2009-11-24
回帖
59
发表于 2014-10-12 11:29:07 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
[pre lang='ruby' line='1']module A
        @a = 123;
        @b = 456;

        attr_accessor :b;

        def self.a
                return @a;
        end
        def self.a=(v)
                @a = v;
        end
end
msgbox(A.a); # => 123
msgbox(A.b); # => NoMethodError[/pre]

分开定义太麻烦了……module里怎么用attr_accessor?

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-10-12 11:42:01 | 显示全部楼层
1.
  1. singleton_class.send(:attr_accessor, :a, :c)
复制代码
2.
  1. class << self
  2.   attr_accessor :a
  3.   attr_accessor :c, :d
  4. end
复制代码

点评

给你张票票玩23333  发表于 2014-10-12 12:10

评分

参与人数 2星屑 +165 +1 收起 理由
VIPArcher + 150 + 1 给你张票票玩
test + 15 认可答案

查看全部评分

回复

使用道具 举报

梦石
1
星屑
23246
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2014-10-12 11:55:05 | 显示全部楼层
  1.   def self.attr_m5_accessor(symbol)
  2.     code = "def self.#{symbol}=(v); @#{symbol} = v; end;"
  3.     code += "def self.#{symbol}; return @#{symbol}; end"   
  4.     eval code
  5.   end
  6.   
  7.   attr_m5_accessor :b
复制代码

评分

参与人数 2星屑 +15 梦石 +1 收起 理由
VIPArcher + 1 认可答案
test + 15 原来attr_accessor也是方法的啊,我一直以.

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部