查看: 1958|回复: 6

问一下以下程序运行的顺序。

  [复制链接]
梦石
0
星屑
73
在线时间
122 小时
注册时间
2009-2-7
回帖
47
发表于 2009-2-8 18:13:13 | 显示全部楼层 |阅读模式

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

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

×
刚刚才在学RGSS,并直接跳过了RGSS1,学习RGSS2,看到范例里有一个初始赋值的语句。

class Person
def initialize(name)
   @name = name
end
end
alex = Person.new("阿莱库斯")

想问一下如果我把语句改成

class Person
def initialize(name)
   @name = name
end
def csgn(a)
   @a = a
end
end
alex = Person.new("阿莱库斯")
这样赋值情况会如何?是两个变量全赋值为“阿菜库斯”,还是只有第一个被赋值,程序是以什么方法判定并运行的?
我尝试在自定义方法里加 Print,为:
class Person
def initialize(name)
   @name = name
p @name
end
def csgn(a)
   @a = a
p @a
end
end
alex = Person.new("阿莱库斯")
# =>结果只打印出了一个 "阿莱库斯"
--------------------------------------
以上请帮忙看看,以便我摸清这个语言的运行模式,及赋值情况。
梦石
0
星屑
60
在线时间
1 小时
注册时间
2008-5-31
回帖
224
发表于 2009-2-8 18:33:14 | 显示全部楼层
一开始XXX.new,应该就是使用 initialize的方法

想改.csgn的应该要XXX.csgn("阿莱库斯")
我。。不是寂寞。。
回复

使用道具 举报

梦石
0
星屑
73
在线时间
122 小时
注册时间
2009-2-7
回帖
47
 楼主| 发表于 2009-2-8 18:39:07 | 显示全部楼层
不是想赋值,而是想知道这段语句写出来后是怎么返回赋值的。
我只想知道这个程序运行的顺序,知道顺序的话我就可以设计其它的程序,好有一个整体的思路。
是否返回了第一个方法,第二个方法自动跳过?
回复

使用道具 举报

梦石
0
星屑
65
在线时间
433 小时
注册时间
2007-5-1
回帖
949
发表于 2009-2-8 18:41:07 | 显示全部楼层
initialize是初始化方法,在对象建立时自动调用,如有参数,在new后面附带。

如:alex = Person.new("阿莱库斯"),这时立即调用initialize,参数传给name,输出@name。

csgn是你自己定义的方法,是要由你自己去调用的。

如:alex.csgn("阿莱库斯"),这时调用csgn,参数传给a,然后输出@a。


系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~

嗯,不能浪费签名了,打广告。本人的悲剧作品:
坑化游戏《龙之影》      R剧《星空》     小游戏《剑与拳头》
回复

使用道具 举报

梦石
0
星屑
50
在线时间
54 小时
注册时间
2008-5-12
回帖
124
发表于 2009-2-8 18:43:26 | 显示全部楼层
定義函數是不會運行的,就是基本常識吧--b
你是個好人>////<
回复

使用道具 举报

梦石
0
星屑
73
在线时间
122 小时
注册时间
2009-2-7
回帖
47
 楼主| 发表于 2009-2-8 20:47:04 | 显示全部楼层
明白了,就是说initialize是个特定的方法,嗯,我继续往下学。MS还有很长路要走=_=,MS还没有完全弄清RGSS很多概念问题。
回复

使用道具 举报

梦石
0
星屑
60
在线时间
1 小时
注册时间
2008-5-31
回帖
224
发表于 2009-2-8 23:29:44 | 显示全部楼层
顺着帮助文件学吧。。。。
我。。不是寂寞。。
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部