Project1

标题: 【Game_Screen类问题】关于数组的使用,以及返回值 [打印本页]

作者: a554187203    时间: 2013-8-24 11:53
标题: 【Game_Screen类问题】关于数组的使用,以及返回值
本帖最后由 a554187203 于 2013-8-24 12:27 编辑

在阅读脚本的时候,看到了这样的一句话
RUBY 代码复制
  1. @pictures = [nil]

这样是数组吗?这个nil的添加有什么特别的意义吗
我把它认为是数组了,不过接下来的让我疑惑了
RUBY 代码复制
  1. for i in 1..100
  2.       @pictures.push(Game_Picture.new(i))
  3.     end

.push的功效是将括号内的内容依次代入数组的末尾
但是这个Game_Picture.new(i)让人不解
请看Game_Picture类的代码
RUBY 代码复制
  1. def initialize(number)
  2.     [url=home.php?mod=space&uid=27178]@Number[/url] = number
  3.     @name = ""
  4.     [url=home.php?mod=space&uid=27559]@origin[/url] = 0
  5.     @x = 0.0
  6.     @y = 0.0
  7.     @zoom_x = 100.0
  8.     @zoom_y = 100.0
  9.     [url=home.php?mod=space&uid=316553]@opacity[/url] = 255.0
  10.     @blend_type = 1
  11.     @duration = 0
  12.     @target_x = @x
  13.     @target_y = @y
  14.     @target_zoom_x = @zoom_x
  15.     @target_zoom_y = @zoom_y
  16.     @target_opacity = @opacity
  17.     @tone = Tone.new(0, 0, 0, 0)
  18.     @tone_target = Tone.new(0, 0, 0, 0)
  19.     @tone_duration = 0
  20.     [url=home.php?mod=space&uid=124954]@Angle[/url] = 0
  21.     @rotate_speed = 0
  22.   end

这串代码好像并没有返还一个值啊,那么@pictures.push(Game_Picture.new(i))这句话好像就是不通逻辑?

自己解决了,nil是数组[0]的内容,并没有什么其他意义,只是为了数组能够从1开始而已
至于没有返回值,是直接将实例保存在了数组中 (学了c的娃苦啊,对象是啥啊,好好的一个函数没有返回值干嘛啊)
为了证明自己的想法写了如下脚本
RUBY 代码复制
  1. class T
  2.   def initialize(y)
  3. p y
  4.   end
  5.   def test(y)
  6.     p y
  7.   end
  8. end
  9. a = [nil]
  10. for i in 1..3
  11. a.push(T.new(i))
  12. end
  13. a[1].test (6)
  14. a[0].test (5)

依次出现
1 2 3 6 出错
说明我的想法没错~
作者: end55rpg    时间: 2013-8-24 11:56
本帖最后由 end55rpg 于 2013-8-24 11:58 编辑

刷帖好玩啊,我继续占楼
i是穿进去的值,不是返回的东西,inlilaize当然不会返回东西,= =
作者: a554187203    时间: 2013-8-24 11:57
end55rpg 发表于 2013-8-24 11:56
刷帖好玩啊,我继续占楼


不是刷帖啊,我在阅读脚本,但是预置脚本有太多不知道的地方了...
作者: satgo1546    时间: 2013-8-24 12:02
推荐看帮助里的脚本解读。
XXX.new 会返回一个 XXX……
比如Sprite.new会返回一个Sprite
作者: a554187203    时间: 2013-8-24 12:23
@myownroc 只是我和ta都在学习脚本,问题比较多,巧合罢了
作者: 无脑之人    时间: 2013-8-24 13:46
卧槽居然不是九灵?一定是我打开的方式不对!
new在内部调用了initialize方法,但是并不是直接调用,new是有返回值的 返回这个类的一个实例,而initialize虽然也有返回值但是那是无意义的
至于[nil]他的目的如您所说是占一个0号位置的格子 使以后的实例能从1开始




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