Project1

标题: 问一下以下程序运行的顺序。 [打印本页]

作者: discain    时间: 2009-2-8 18: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("阿莱库斯")
# =>结果只打印出了一个 "阿莱库斯"
--------------------------------------
以上请帮忙看看,以便我摸清这个语言的运行模式,及赋值情况。
作者: njx937    时间: 2009-2-8 18:33
一开始XXX.new,应该就是使用 initialize的方法

想改.csgn的应该要XXX.csgn("阿莱库斯")

作者: discain    时间: 2009-2-8 18:39
不是想赋值,而是想知道这段语句写出来后是怎么返回赋值的。
我只想知道这个程序运行的顺序,知道顺序的话我就可以设计其它的程序,好有一个整体的思路。
是否返回了第一个方法,第二个方法自动跳过?
作者: 水镜风生    时间: 2009-2-8 18:41
initialize是初始化方法,在对象建立时自动调用,如有参数,在new后面附带。

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

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

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

[LINE]1,#dddddd[/LINE]系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
作者: Quarcy    时间: 2009-2-8 18:43
定義函數是不會運行的,就是基本常識吧--b
作者: discain    时间: 2009-2-8 20:47
明白了,就是说initialize是个特定的方法,嗯,我继续往下学。MS还有很长路要走=_=,MS还没有完全弄清RGSS很多概念问题。
作者: njx937    时间: 2009-2-8 23:29
顺着帮助文件学吧。。。。




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