查看: 4069|回复: 7

[推荐问答] 请教一个RPG Maker XP 里的F1的问题

[复制链接]
梦石
0
星屑
607
在线时间
111 小时
注册时间
2012-9-30
回帖
86
发表于 2014-6-24 11:27:28 | 显示全部楼层 |阅读模式

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

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

×
实变量属于个体对象的变量称为实变量。名称以 @ 开头的变量,自动作为实变量使用。局部变量只有在 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这样定义属性是什么意思?有什么意义!

点评

要有引号……楼主先从基础的东西先看起吧……  发表于 2014-6-24 21:01
梦石
0
星屑
76
在线时间
1379 小时
注册时间
2012-7-5
回帖
1643

开拓者

发表于 2014-6-24 12:18:51 | 显示全部楼层
  def name=(name)
    @name = name
  end
颜色相同的注释:
方法名传入参数某实例变量@name
这样在外部操作这个对象时就可以用    对象名.name=(传入参数)   来完成方法中定义的操作

点评

外部操作是什么意思呢?  发表于 2014-6-24 19:57

  -fk: -azogi:
回复

使用道具 举报

…あたしは天

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

开拓者贵宾

发表于 2014-6-24 12:37:15 来自手机 | 显示全部楼层
本帖最后由 taroxd 于 2014-6-24 13:28 编辑

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

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

我猜楼主看不懂楼上在说什么

点评

能这样子吗?跑到XP区里面宣传VA区的东西。  发表于 2014-7-10 15:54
VA区是什么活动,是逐行解释脚本内容的么?  发表于 2014-6-24 19:58
回复

使用道具 举报

梦石
0
星屑
2826
在线时间
2634 小时
注册时间
2013-1-16
回帖
5453

贵宾

发表于 2014-6-24 18:21:11 | 显示全部楼层
  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来随意设定
如果没有,那么就不能设定……
可以测试看看

点评

让他看教程又不是让他用VA……  发表于 2014-6-24 21:04
↓感觉你在挖墙脚←_←  发表于 2014-6-24 21:03
我要办活动~\(≧▽≦)/~  发表于 2014-6-24 21:02
↓楼主好像才刚刚入门……  发表于 2014-6-24 21:02
↓ 但楼主没有理解你的说明  发表于 2014-6-24 20:57
(Created by @喵kano)


施工现场:hotege.github.io
回复

使用道具 举报

…あたしは天

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

开拓者贵宾

发表于 2014-6-24 20:01:38 | 显示全部楼层
本帖最后由 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帮助文档讲得太快太简略,会有不理解也是正常现象

点评

好吧  发表于 2014-7-10 22:15
虽然名为RGSS3,但基本的东西和XP是一样的  发表于 2014-7-10 16:48
这到底是XP区还是VA区啊  发表于 2014-7-10 15:56
稍微高级点的,就请期待活动吧  发表于 2014-6-25 06:11
亲,这些基础的东西我已经看了很多遍了,你发链接帖子里的东西都是看就知道的,可能不适合我了!有没有高级一点的教程呢,亲?  发表于 2014-6-24 22:20
回复

使用道具 举报

梦石
0
星屑
607
在线时间
111 小时
注册时间
2012-9-30
回帖
86
 楼主| 发表于 2014-6-24 22:27:24 | 显示全部楼层
myownroc 发表于 2014-6-24 18:21
这个有def name=(name)
于是可以通过a.name = xxxx来随意设定
如果没有,那么就不能设定……

0101.jpg
0102.jpg
回复

使用道具 举报

梦石
0
星屑
2826
在线时间
2634 小时
注册时间
2013-1-16
回帖
5453

贵宾

发表于 2014-6-24 22:29:26 | 显示全部楼层
wgr273 发表于 2014-6-24 22:27

看看F1里,它有个new
所以你这个p 之前要有个a = Person.new

点评

这样做就是能让你写a.name = "aaa"不报错……  发表于 2014-6-25 00:24
这样弄出来的结果是“aaa”,但是这样又有什么意义呢,我是说@name=name 这整个类包括方法的定义,这样做的意义是什么?是我后面可以直接用些什.  发表于 2014-6-25 00:05

评分

参与人数 1星屑 +1 收起 理由
怪蜀黍 + 1 这样做就是能让你写a.name = "aaa"不报错.

查看全部评分

(Created by @喵kano)


施工现场:hotege.github.io
回复

使用道具 举报

八宝粥的基叔

梦石
0
星屑
4957
在线时间
5234 小时
注册时间
2009-4-29
回帖
14054

贵宾

发表于 2014-6-25 11:40:18 | 显示全部楼层
他看懂了,估计汝亦能看懂,吾说得很详细了
https://rpg.blue/forum.php?mod=redirect&goto=findpost&ptid=322034&pid=2236183
《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

《逝去的回忆3》的讨论群:
一群:192885514
二群:200460747
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部