设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2155|回复: 4

[已经解决] 【RMVA]】对系统脚本 def object=(item)用法存疑?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
109
在线时间
410 小时
注册时间
2020-1-11
帖子
253
发表于 2020-7-8 18:41:43 | 显示全部楼层 |阅读模式

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

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

x
#==============================================================================
# ■ Game_BaseItem
#------------------------------------------------------------------------------
#  スキル、アイテム、武器、防具を統一的に扱うクラスです。セーブデータに含める
# ことができるように、データベースオブジェクト自体への参照は保持しません。
#==============================================================================

class Game_BaseItem
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    @class = nil
    @item_id = 0
  end
...
...
...
#--------------------------------------------------------------------------
  # ● アイテムオブジェクトの設定
  #--------------------------------------------------------------------------
def object=(item)
    @class = item ? item.class : nil
    @item_id = item ? item.id : 0
  end

红字部份无法完全理解,def object=(item) 中的  item 难道可以同时指定 @class /@item_id 两者?

Lv5.捕梦者 (版主)

梦石
1
星屑
23963
在线时间
3338 小时
注册时间
2011-7-8
帖子
3925

开拓者

发表于 2020-7-8 18:46:11 | 显示全部楼层
可以啊,因为item是一个对象……拥有多个属性很正常吧,然后这里把item的class和id属性传给了实例变量@class和@item_id。
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv6.析梦学徒

老鹰

梦石
39
星屑
33308
在线时间
6542 小时
注册时间
2012-5-26
帖子
3176

极短23参与极短22参与极短21评委老司机慢点开短篇十吟唱者组别冠军开拓者剧作品鉴家

发表于 2020-7-8 19:13:06 | 显示全部楼层
这其实就是一个方法,只不过做了一点特殊的结构处理
使得它可以被写成 .object = item 这样罢了
如果是
def object(item)
    @class = item ? item.class : nil
    @item_id = item ? item.id : 0
end
就是标准的 .object(item) 的调用方式

作用都是给实例变量赋值
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
109
在线时间
410 小时
注册时间
2020-1-11
帖子
253
 楼主| 发表于 2020-7-8 21:55:49 | 显示全部楼层
不是很明白。能举个实际使用例子吗?
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
10
星屑
39440
在线时间
1914 小时
注册时间
2010-11-14
帖子
3315

R考场第七期纪念奖

发表于 2020-7-8 23:39:45 | 显示全部楼层
本帖最后由 KB.Driver 于 2020-7-8 23:45 编辑
alianlord 发表于 2020-7-8 21:55
不是很明白。能举个实际使用例子吗?


我打个不恰当的比方
有一个中国人Person的实例person
我通过调用person.name=和person.name,就能读取与设置名字。
QQ截图20200708234534.jpg

然而它的内部可能是这样的:
QQ截图20200708233649.jpg

也就是说,调用person.name = "xxx"时,并没有操作一个叫@name的实例变量
但是在外部看来,并不关注它内部是如何实现的,只要能让我读写name就可以了

不过不管怎么说,name=都只是一个方法而已
和一般的方法唯一的不同就是它可以用近似赋值语句的方式来写
用头画头像,用脚写脚本
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-3-28 23:42

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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