quzhongwei 2008-6-9 22:40
A.1 Ruby程序入口点概念的掌握
伱可以用记事本建立一个Ruby程序的源文件,比如a.rb,内容如下:[code]puts "Hello, Ruby"[/code]伱可以用:[code]ruby a.rb[/code]运行这个程序,输出:Hello, Ruby。
这表明Ruby程序的入口点在第一条可执行语句处。
你也可以在源文件中定义如下的一个方法:[code]def Foo
puts "Hello, World!"
end[/code]运行后输出:[code]Hello, Ruby[/code]这里Foo是方法。
同样,你也可以定义一个类:[code]class A
puts "A"
def WoW
puts "WoW"
end
end[/code]伱将会发现在类A中,"A"得到了输出,而类A中的WoW方法没有输出。
综上所述,Ruby程序的入口点为:[code]第一条可执行语句[/code]完整的例子如下:[code]puts "Hello, Ruby"
def Foo
puts "Hello, World!"
end
class A
puts "A"
def WoW
puts "WoW"
end
end[/code]输出:[code]Hello, Ruby
A[/code]
[[i] 本帖最后由 quzhongwei 于 2008-6-10 00:20 编辑 [/i]]
maninred 2008-6-9 23:45
Ruby的命名规范里,方法是不能用大写字母的吧?就算是其它的OOPL的驼峰式命名也是首字母小写的吧。
quzhongwei 2008-6-9 23:49
是的,首字母小写!
这里只是揭示程序的入口点
drive2me 2008-6-9 23:54
好,俺还没有总结这个入口点呢。
明白了。
谢谢。
lkl 2008-6-10 17:02
我看不懂啊!以往只接触了一点点也。
xavier 2008-6-10 18:21
如果只有方法定义而无调用的话
应该不会有输出的吧?
至少在我这里是这样.....
drive2me 2008-6-10 18:55
[quote]原帖由 [i]lkl[/i] 于 2008-6-10 17:02 发表 [url=http://www.ruby-lang.org.cn/forums/redirect.php?goto=findpost&pid=16595&ptid=5087][img]http://www.ruby-lang.org.cn/forums/images/common/back.gif[/img][/url]
我看不懂啊!以往只接触了一点点也。 [/quote]
那lkl是谁呀?好奇!
wjpp0000 2008-6-10 22:12
第一条是可执行语句
那在第一条语句处调用方法呢?
quzhongwei 2008-6-10 22:26
[quote]原帖由 [i]wjpp0000[/i] 于 2008-6-10 22:12 发表 [url=http://www.ruby-lang.org.cn/forums/redirect.php?goto=findpost&pid=16605&ptid=5087][img]http://www.ruby-lang.org.cn/forums/images/common/back.gif[/img][/url]
第一条是可执行语句
那在第一条语句处调用方法呢? [/quote]
方法在后定义的话一般是:
XXX.rb:1: undefined local variable or method `。。。' for main:Object (NameError)
除非调用顶层对象的方法。
tigertank 2008-6-11 10:51
以往的编程语言都是从main()开始的,从第一条可执行语句开始是不一样!!!
谢谢楼主
gongmeihao 2008-6-13 16:51
已理解,努力下一目标。
wbflike 2008-6-16 10:55
不像java那样走main方法运行吗?我还是不懂。
krrish 2008-6-23 12:10
class中的wow不能使用
黑马 2008-6-23 13:11
这地方我不谈入口点,对于楼主使用的代码得到的结果我的解释是,因为
Ruby的定义性代码是[color=Red][size=6]可执行[/size][/color]的
参看我另一遍贴子
[url=http://www.ruby-lang.org.cn/forums/viewthread.php?tid=5162&page=1#pid17107]http://www.ruby-lang.org.cn/forums/viewthread.php?tid=5162&page=1#pid17107[/url]
[[i] 本帖最后由 wtbwtb 于 2008-6-23 13:14 编辑 [/i]]
vintager 2008-7-5 21:33
class A
puts "A"
def WoW
puts "WoW"
end
end
居然有输出,真是奇怪啊,这不是一个类定义吗,并没有实例化啊?
vintager 2008-7-5 23:29
[code]class A
def b
puts "in method b"
end
b
end[/code]输出为:undefined local variable or method `b' for A:Class (NameError)
为何?
黑马 2008-7-6 08:30
[quote]原帖由 [i]vintager[/i] 于 2008-7-5 21:33 发表 [url=http://www.ruby-lang.org.cn/forums/redirect.php?goto=findpost&pid=17611&ptid=5087][img]http://www.ruby-lang.org.cn/forums/images/common/back.gif[/img][/url]
class A
puts "A"
def WoW
puts "WoW"
end
end
居然有输出,真是奇怪啊,这不是一个类定义吗,并没有实例化啊? [/quote]
我已经用红色放大的文字说明了,你仔细看看好嘛?
dhb008 2008-7-14 15:44
晕了,以前接触C#的 这个程序看了半个小时才 有点明白 是不是太笨了~~~
drive2me 2008-7-14 19:15
[quote]原帖由 [i]dhb008[/i] 于 2008-7-14 15:44 发表 [url=http://www.ruby-lang.org.cn/forums/redirect.php?goto=findpost&pid=17999&ptid=5087][img]http://www.ruby-lang.org.cn/forums/images/common/back.gif[/img][/url]
晕了,以前接触C#的 这个程序看了半个小时才 有点明白 是不是太笨了~~~ [/quote]
因为它是Ruby,很灵活,看习惯就好了。
会C的人是人精,怎么会笨呀!你会很快就掌握的,我肯定!
加油!:)
alanyuqiang 2008-7-26 00:55
[quote]原帖由 [i]vintager[/i] 于 2008-7-5 23:29 发表 [url=http://www.ruby-lang.org.cn/forums/redirect.php?goto=findpost&pid=17612&ptid=5087][img]http://www.ruby-lang.org.cn/forums/images/common/back.gif[/img][/url]
class A
def b
puts "in method b"
end
b
end输出为:undefined local variable or method `b' for A:Class (NameError)
为何? [/quote]
这是因为b是一实例方法,当然不能在里面被调用,要想在里面调用,就加上self.b,这样就变为是类方法了。
黑马 2008-7-27 09:05
前面已经反复说过了,ruby的定义代码即是可执行的。因为它的类(模块)的定义体本身即是一个对象Class类(Module类)的对象。
juzhibest 2008-7-28 09:45
果然受益匪浅
class ClassMethod
puts "定义性代码都是可执行的!"
def a() #实例方法
puts " def a() 方法"
end
def self.b() #b类方法
puts " self.b() 方法"
end
def ClassMethod.c() #c类方法
puts "ClassMethod.c() 方法"
end
end
if __FILE__ == $0
# TODO Generated stub
ClassMethod.b() #b类方法
ClassMethod.c() #c类方法
ClassMethod.new.a() #a实例方法
end
HmilyChen 2008-8-5 01:12
弱弱的问一句,用记事本建完一个a.rb后,在里面写下puts "HelloWorld",并保存.那我该如何执行它呢?
黑马 2008-8-5 12:40
在win下
ruby a.rb
在linux下
1 ruby a.rb
2 在a.rb的第一行写上 #!/path/ruby (path改成你的ruby实际路径),然后chmod 755 a.rb,再./a.rb 即可
wscc111 2008-8-6 16:40
3KS 黑馬 大哥!
3KS 黑馬 大哥!3KS 黑馬 大哥!
miqingyang 2008-8-12 16:46
疑问
class A
puts "aa"
def c
puts "bb"
end
puts "cc"
end
输出是
aa
cc
我感觉黑马说的是可执行的可以理解,程序入口点怎么理解呢
zhangxu3739 2008-8-21 14:54
输出的时候为什么一闪就没了啊
我都没看清楚显示的是什么啊
zhangxu3739 2008-8-21 15:17
class A
def function
puts "this is a method"
end
def main
self.function
end
end
为什么没输出东西来啊
一个类内有个方法 这个方法输出一句话
然后调用这个方法 怎么没输出东西????
黑马 2008-8-25 18:29
ruby不是把main作为主函数的。
njawen 2008-8-26 11:38
虽然对Ruby现在还是一窍不通,但LZ的意思已经明白了。
LZ是要我们区分Ruby和其他语言,Ruby只要遇到可执行语句就会执行,而其他语言必须有个入口方法比如main()
不知道理解是否正确