Project1
标题: 【Game_Screen类问题】关于数组的使用,以及返回值 [打印本页]
作者: a554187203 时间: 2013-8-24 11:53
标题: 【Game_Screen类问题】关于数组的使用,以及返回值
本帖最后由 a554187203 于 2013-8-24 12:27 编辑
在阅读脚本的时候,看到了这样的一句话
这样是数组吗?这个nil的添加有什么特别的意义吗
我把它认为是数组了,不过接下来的让我疑惑了
for i in 1..100
@pictures.push(Game_Picture.new(i))
end
for i in 1..100
@pictures.push(Game_Picture.new(i))
end
.push的功效是将括号内的内容依次代入数组的末尾
但是这个Game_Picture.new(i)让人不解
请看Game_Picture类的代码
def initialize(number)
[url=home.php?mod=space&uid=27178]@Number[/url] = number
@name = ""
[url=home.php?mod=space&uid=27559]@origin[/url] = 0
@x = 0.0
@y = 0.0
@zoom_x = 100.0
@zoom_y = 100.0
[url=home.php?mod=space&uid=316553]@opacity[/url] = 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
[url=home.php?mod=space&uid=124954]@Angle[/url] = 0
@rotate_speed = 0
end
def initialize(number)
[url=home.php?mod=space&uid=27178]@Number[/url] = number
@name = ""
[url=home.php?mod=space&uid=27559]@origin[/url] = 0
@x = 0.0
@y = 0.0
@zoom_x = 100.0
@zoom_y = 100.0
[url=home.php?mod=space&uid=316553]@opacity[/url] = 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
[url=home.php?mod=space&uid=124954]@Angle[/url] = 0
@rotate_speed = 0
end
这串代码好像并没有返还一个值啊,那么@pictures.push(Game_Picture.new(i))这句话好像就是不通逻辑?
自己解决了,nil是数组[0]的内容,并没有什么其他意义,只是为了数组能够从1开始而已
至于没有返回值,是直接将实例保存在了数组中 (学了c的娃苦啊,对象是啥啊,好好的一个函数没有返回值干嘛啊)
为了证明自己的想法写了如下脚本
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)
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)
依次出现
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 ![](static/image/common/back.gif)
刷帖好玩啊,我继续占楼
不是刷帖啊,我在阅读脚本,但是预置脚本有太多不知道的地方了...
作者: 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 |