查看: 1705|回复: 5

[已经解决] 【Game_Screen类问题】关于数组的使用,以及返回值

[复制链接]

超级囧神 无尽的灌水

梦石
0
星屑
144
在线时间
784 小时
注册时间
2010-6-27
回帖
1859
发表于 2013-8-24 11:53:37 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 a554187203 于 2013-8-24 12:27 编辑

在阅读脚本的时候,看到了这样的一句话
[pre lang="ruby" line="1"]    @pictures = [nil][/pre]
这样是数组吗?这个nil的添加有什么特别的意义吗
我把它认为是数组了,不过接下来的让我疑惑了
[pre lang="ruby" line="1"]    for i in 1..100
      @pictures.push(Game_Picture.new(i))
    end[/pre]
.push的功效是将括号内的内容依次代入数组的末尾
但是这个Game_Picture.new(i)让人不解
请看Game_Picture类的代码
[pre lang="ruby" line="1"]  def initialize(number)
    @Number = number
    @name = ""
    @origin = 0
    @x = 0.0
    @y = 0.0
    @zoom_x = 100.0
    @zoom_y = 100.0
    @opacity = 255.0
    @blend_type = 1
    @duration = 0
    @target_x = @x
    @target_y = @y
    @target_zoom_x = @zoom_x
    @target_zoom_y = @zoom_y
    @target_opacity = @opacity
    @tone = Tone.new(0, 0, 0, 0)
    @tone_target = Tone.new(0, 0, 0, 0)
    @tone_duration = 0
    @Angle = 0
    @rotate_speed = 0
  end[/pre]
这串代码好像并没有返还一个值啊,那么@pictures.push(Game_Picture.new(i))这句话好像就是不通逻辑?

自己解决了,nil是数组[0]的内容,并没有什么其他意义,只是为了数组能够从1开始而已
至于没有返回值,是直接将实例保存在了数组中 (学了c的娃苦啊,对象是啥啊,好好的一个函数没有返回值干嘛啊)
为了证明自己的想法写了如下脚本
[pre lang="ruby" line="1"]class T
  def initialize(y)
p y
  end
  def test(y)
    p y
  end
end
a = [nil]
for i in 1..3
a.push(T.new(i))
end
a[1].test (6)
a[0].test (5)[/pre]
依次出现
1 2 3 6 出错
说明我的想法没错~

点评

在Ruby里……  发表于 2013-8-24 12:06
梦石
0
星屑
752
在线时间
800 小时
注册时间
2011-10-20
回帖
2257

开拓者

发表于 2013-8-24 11:56:33 | 显示全部楼层
本帖最后由 end55rpg 于 2013-8-24 11:58 编辑

刷帖好玩啊,我继续占楼
i是穿进去的值,不是返回的东西,inlilaize当然不会返回东西,= =

点评

我原本是这样想得,i传递给参数,参数返还一个值,值再给数组。  发表于 2013-8-24 12:03
等等,我仔细看了看,它是不是新建了一百个实例分别带入了数组啊...数组也能存放实例?  发表于 2013-8-24 12:02
欢迎点此进入我的egames.wink.ws,有RMQQ堂等

[url=http://rpg.blue/thread-317273-1-1.html]短篇八-赶选

http://yun.baidu.com/share/link?shareid=2158225779&uk=169642147&third=0


历险?ARPG?赢回你的疆域?新的战斗模式?…………点击这里:[宋乱贼狂 for QQ堂]
http://rpg.blue/group-368-1.html
programing ....?
[url=http://rpg.blue/thrd-234658-1-1.html]
回复

使用道具 举报

超级囧神 无尽的灌水

梦石
0
星屑
144
在线时间
784 小时
注册时间
2010-6-27
回帖
1859
 楼主| 发表于 2013-8-24 11:57:52 | 显示全部楼层
end55rpg 发表于 2013-8-24 11:56
刷帖好玩啊,我继续占楼


不是刷帖啊,我在阅读脚本,但是预置脚本有太多不知道的地方了...

点评

怎麽和@九靈一樣愛問腳本問題。。。  发表于 2013-8-24 12:16
我要逆天  发表于 2013-8-24 11:59
回复

使用道具 举报

梦石
0
星屑
660
在线时间
1286 小时
注册时间
2011-6-14
回帖
3949
发表于 2013-8-24 12:02:48 | 显示全部楼层
推荐看帮助里的脚本解读。
XXX.new 会返回一个 XXX……
比如Sprite.new会返回一个Sprite

点评

在哪里啊,找不到...  发表于 2013-8-24 12:06
回复

使用道具 举报

超级囧神 无尽的灌水

梦石
0
星屑
144
在线时间
784 小时
注册时间
2010-6-27
回帖
1859
 楼主| 发表于 2013-8-24 12:23:31 | 显示全部楼层
@myownroc 只是我和ta都在学习脚本,问题比较多,巧合罢了
回复

使用道具 举报

梦石
0
星屑
122
在线时间
552 小时
注册时间
2012-8-18
回帖
1392
发表于 2013-8-24 13:46:24 | 显示全部楼层
卧槽居然不是九灵?一定是我打开的方式不对!
new在内部调用了initialize方法,但是并不是直接调用,new是有返回值的 返回这个类的一个实例,而initialize虽然也有返回值但是那是无意义的
至于[nil]他的目的如您所说是占一个0号位置的格子 使以后的实例能从1开始
我要填坑!我要背单词!我要学日语!我要每天锻炼!
好吧呵呵= =
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部