Project1

标题: 请教一个RPG Maker XP 里的F1的问题 [打印本页]

作者: wgr273    时间: 2014-6-24 11:27
标题: 请教一个RPG Maker XP 里的F1的问题
实变量属于个体对象的变量称为实变量。名称以 @ 开头的变量,自动作为实变量使用。局部变量只有在 def ~ end 等结构内部使用时才有效,然而使用实变量的话,只要其对象存在,变量的值就会被保存。实变量一般作为对象的属性来使用。

class Person
  def name
    return @name
  end
  def name=(name)
    @name = name
  end
  def hello
    print "我是" + @name + ""
  end
end

alex = Person.new
alex.name = "艾力克斯"
alex.hello                  # => 我是艾力克斯

上面的示例是先准备 @name 实变量,使用 name、name= 方法把对象附加上 @name 实变量作为属性。像这样的方法称为附加属性。附加属性也能更简单的像下面那样编写。

  attr_accessor :name

这样编写是,自动定义与 : 符号右侧名称相同的实变量对应属性的取得和注解方法。上例中是生成 @name 实变量并附加成为属性。总之,

  def name
    return @name
  end
  def name=(name)
    @name = name
  end

是与上面相同的意思。

在预置脚本中 attr_accessor 应用得很多。但在只定义属性的取得方法的情况下,一般使用 attr_reader 代替 attr_accessor。


上面这段是F1帮助里面的原文但是我不太理解 @name = name这样定义属性是什么意思?有什么意义!
作者: kuerlulu    时间: 2014-6-24 12:18
  def name=(name)
    @name = name
  end
颜色相同的注释:
方法名传入参数某实例变量@name
这样在外部操作这个对象时就可以用    对象名.name=(传入参数)   来完成方法中定义的操作
作者: taroxd    时间: 2014-6-24 12:37
本帖最后由 taroxd 于 2014-6-24 13:28 编辑

敬请期待va区近期活动,会有详细的解释

活动预告在水区某个蓝色高亮的帖子

我猜楼主看不懂楼上在说什么
作者: myownroc    时间: 2014-6-24 18:21
  1. class Person
  2.    def name
  3.      return @name
  4.    end
  5.    def name=(name)
  6.      @name = name
  7.    end
  8.    def hello
  9.      print "我是" + @name + ""
  10.    end
  11. end
复制代码
这个有def name=(name)
于是可以通过a.name = xxxx来随意设定
如果没有,那么就不能设定……
可以测试看看
作者: taroxd    时间: 2014-6-24 20:01
本帖最后由 taroxd 于 2014-6-24 20:08 编辑
taroxd 发表于 2014-6-24 12:37
敬请期待va区近期活动,会有详细的解释

活动预告在水区某个蓝色高亮的帖子


https://rpg.blue/thread-367097-1-2.html
届时不会让你失望的,请务必前来参观(虽然名为RGSS3,但基本的东西和XP是一样的)

脚本最基础的东西请参考:https://rpg.blue/thread-249826-1-1.html

F1帮助文档讲得太快太简略,会有不理解也是正常现象
作者: wgr273    时间: 2014-6-24 22:27
myownroc 发表于 2014-6-24 18:21
这个有def name=(name)
于是可以通过a.name = xxxx来随意设定
如果没有,那么就不能设定……



作者: myownroc    时间: 2014-6-24 22:29
wgr273 发表于 2014-6-24 22:27

看看F1里,它有个new
所以你这个p 之前要有个a = Person.new
作者: 怪蜀黍    时间: 2014-6-25 11:40
他看懂了,估计汝亦能看懂,吾说得很详细了
https://rpg.blue/forum.php?mod=redirect&goto=findpost&ptid=322034&pid=2236183




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1