Project1

标题: 关于RGSS的问题 [打印本页]

作者: 邱小谦    时间: 2013-12-1 18:50
标题: 关于RGSS的问题
f1里面有个教程说
def name
return @name
def name = (@name)
@name = name
end
这一段代码到底是什么意思啊?望高手教教我理解下。
还有每段代码开头都有一段用构造函数initialize来初始化变量。
例子;class Person
           def initialize(name,age)
            @name = name
            @age = age
          end
为什么要初始化呢?

作者: 凝望·流年    时间: 2013-12-1 18:57
第一个应该用来显示名字,必须定义才能显示呀
作者: 紫英晓狼1130    时间: 2013-12-1 19:01
第二个主要调用带参数的构造函数,否则不构造方法当然出错
作者: satgo1546    时间: 2013-12-1 19:11
1.相当于attr_accessor :name,定义一个属性
2.不初始化的话实例变量是nil
作者: 邱小谦    时间: 2013-12-4 17:37
satgo1546 发表于 2013-12-1 19:11
1.相当于attr_accessor :name,定义一个属性
2.不初始化的话实例变量是nil

就是说要初始化才能调用这个类的这个属性是吧。不然这个变量的值就为nil?这么理解可以么?
作者: 邱小谦    时间: 2013-12-5 11:54
satgo1546 发表于 2013-12-1 19:11
1.相当于attr_accessor :name,定义一个属性
2.不初始化的话实例变量是nil

但是为什么这些东西我单独看能看懂。但是如果你让我自己连起来写一个独立的脚本就不会写了呢?我看默认脚本和别人写的脚本都是类似的结构。但是自己来写,就一点思路没有,不知道从何下手。。。
作者: fux2    时间: 2013-12-5 13:57
你不要被符号影响了,他这里定义成
  1. def name
  2. return @name
  3. end
复制代码
实际上你定义成
  1. def fux2
  2. return @name
  3. end
复制代码
也没问题,name是一个方法,用于读取@name实例变量
而attr_accessor实际上就是帮你省略了定义xx和xx=方法(还是有区别的,不过现在不需要在意

而初始化很显而易见很多实例变量需要一个初始值,
比如我定义了一个角色类,升级的时候必然是等级+1
但是如果等级没有初始化成一个数字,默认是nil的话,这个时候就会跳错
nil+1是不可能的。
作者: 邱小谦    时间: 2013-12-5 14:04
fux2 发表于 2013-12-5 13:57
你不要被符号影响了,他这里定义成实际上你定义成也没问题,name是一个方法,用于读取@name实例变量
而attr ...

原来如此。。。




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