幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1622|回复: 3

[RMVX] 问个关于RGSS中关于“属性”的问题

[复制链接]

1

主题

4

帖子

34

积分

②入门

积分
34
发表于 2009-3-3 15:10:04 | 显示全部楼层 |阅读模式
我是RGSS的新手,正在努力学习中。现在有个问题想问一下这里的前辈们。
RGSS中“属性”这个概念怎么理解,我个人理解其实是定义的一种类中的“方法”,只不过做了变相的处理。
这种理解对吗?请前辈们指导讲解,先谢过了。
回复

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
发表于 2009-3-4 15:24:22 | 显示全部楼层
差不多吧。。。一样的调用
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

8

主题

215

帖子

2223

积分

⑥精研

积分
2223
发表于 2009-3-4 15:52:12 | 显示全部楼层
是说通过attr_accessor/attr_reader/attr_writer定义的“属性”?它们本来就是方法,不过是自动生成了而已。Rubinius里的这几个方法是这样实现的
  1. def attr_reader(name)
  2.   meth = AccessVariable.get_ivar name
  3.   @method_table[name] = meth
  4.   return nil
  5. end
  6. def attr_writer(name)
  7.   meth = AccessVariable.set_ivar name
  8.   @method_table["#{name}=".to_sym] = meth
  9.   return nil
  10. end
  11. def attr_accessor(name)
  12.   attr_reader(name)
  13.   attr_writer(name)
  14.   return true
  15. end
复制代码


在调用attr_accessor的时候,它就会生成出对应的getter和setter。所以
  1. class Foo
  2.   attr_accessor :my_prop
  3. end
复制代码

与这个是等价的:
  1. class Foo
  2.   def my_prop
  3.     @my_prop
  4.   end
  5.   def my_prop=(value)
  6.     @my_prop = value
  7.   end
  8. end
复制代码
回复 支持 反对

使用道具 举报

1

主题

4

帖子

34

积分

②入门

积分
34
 楼主| 发表于 2009-3-6 11:22:40 | 显示全部楼层
3Q,我明白了。
多谢前辈们对菜鸟的耐心讲解。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-5-16 21:31 , Processed in 0.022768 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表