A.1 Ruby程序入口点概念的掌握

上一篇 / 下一篇  2008-06-09 22:40:12

查看( 207 ) / 评论( 37 )
伱可以用记事本建立一个Ruby程序的源文件,比如a.rb,内容如下:

CODE:

puts "Hello, Ruby"伱可以用:

CODE:

ruby a.rb运行这个程序,输出:Hello, Ruby。
这表明Ruby程序的入口点在第一条可执行语句处。
你也可以在源文件中定义如下的一个方法:

CODE:

def Foo
    puts "Hello, World!"
end
运行后输出:

CODE:

Hello, Ruby这里Foo是方法。
同样,你也可以定义一个类:

CODE:

class A
    puts "A"
    def WoW
        puts "WoW"
    end
end
伱将会发现在类A中,"A"得到了输出,而类A中的WoW方法没有输出。

综上所述,Ruby程序的入口点为:

CODE:

第一条可执行语句完整的例子如下:

CODE:

puts "Hello, Ruby"

def Foo
    puts "Hello, World!"
end

class A
    puts "A"
    def WoW
        puts "WoW"
    end
end
输出:

CODE:

Hello, Ruby
A
[ 本帖最后由 quzhongwei 于 2008-6-10 00:20 编辑 ]

TAG:

red_world maninred 发布于2008-06-09 23:45:11
Ruby的命名规范里,方法是不能用大写字母的吧?就算是其它的OOPL的驼峰式命名也是首字母小写的吧。
quzhongwei的个人空间 quzhongwei 发布于2008-06-09 23:49:12
是的,首字母小写!
这里只是揭示程序的入口点
小飞猪之Ruby窝 drive2me 发布于2008-06-09 23:54:27
好,俺还没有总结这个入口点呢。
明白了。

谢谢。
lkl发布于2008-06-10 17:02:19
我看不懂啊!以往只接触了一点点也。
Xavier on Rails xavier 发布于2008-06-10 18:21:17
如果只有方法定义而无调用的话
应该不会有输出的吧?
至少在我这里是这样.....
小飞猪之Ruby窝 drive2me 发布于2008-06-10 18:55:47

QUOTE:

原帖由 lkl 于 2008-6-10 17:02 发表
我看不懂啊!以往只接触了一点点也。
那lkl是谁呀?好奇!
wjpp0000发布于2008-06-10 22:12:33
第一条是可执行语句
那在第一条语句处调用方法呢?
quzhongwei的个人空间 quzhongwei 发布于2008-06-10 22:26:39

QUOTE:

原帖由 wjpp0000 于 2008-6-10 22:12 发表
第一条是可执行语句
那在第一条语句处调用方法呢?
方法在后定义的话一般是:
XXX.rb:1: undefined local variable or method `。。。' for main:Object (NameError)
除非调用顶层对象的方法。
tigertank发布于2008-06-11 10:51:06
以往的编程语言都是从main()开始的,从第一条可执行语句开始是不一样!!!
谢谢楼主
gongmeihao发布于2008-06-13 16:51:31
已理解,努力下一目标。
wbflike发布于2008-06-16 10:55:14
不像java那样走main方法运行吗?我还是不懂。
krrish发布于2008-06-23 12:10:29
class中的wow不能使用
黑马发布于2008-06-23 13:11:25
这地方我不谈入口点,对于楼主使用的代码得到的结果我的解释是,因为
Ruby的定义性代码是可执行
参看我另一遍贴子
http://www.ruby-lang.org.cn/forums/viewthread.php?tid=5162&page=1#pid17107

[ 本帖最后由 wtbwtb 于 2008-6-23 13:14 编辑 ]
vintager发布于2008-07-05 21:33:02
class A
    puts "A"
    def WoW
        puts "WoW"
    end
end
居然有输出,真是奇怪啊,这不是一个类定义吗,并没有实例化啊?
vintager发布于2008-07-05 23:29:23

CODE:

class A
  def b
    puts "in method b"
  end
  b
end
输出为:undefined local variable or method `b' for A:Class (NameError)
为何?
黑马发布于2008-07-06 08:30:31

QUOTE:

原帖由 vintager 于 2008-7-5 21:33 发表
class A
    puts "A"
    def WoW
        puts "WoW"
    end
end
居然有输出,真是奇怪啊,这不是一个类定义吗,并没有实例化啊?
我已经用红色放大的文字说明了,你仔细看看好嘛?
dhb008发布于2008-07-14 15:44:21
晕了,以前接触C#的 这个程序看了半个小时才 有点明白 是不是太笨了~~~
小飞猪之Ruby窝 drive2me 发布于2008-07-14 19:15:43

QUOTE:

原帖由 dhb008 于 2008-7-14 15:44 发表
晕了,以前接触C#的 这个程序看了半个小时才 有点明白 是不是太笨了~~~
因为它是Ruby,很灵活,看习惯就好了。
会C的人是人精,怎么会笨呀!你会很快就掌握的,我肯定!
加油!
alanyuqiang发布于2008-07-26 00:55:27

QUOTE:

原帖由 vintager 于 2008-7-5 23:29 发表
class A
  def b
    puts "in method b"
  end
  b
end输出为:undefined local variable or method `b' for A:Class (NameError)
为何?
这是因为b是一实例方法,当然不能在里面被调用,要想在里面调用,就加上self.b,这样就变为是类方法了。
黑马发布于2008-07-27 09:05:49
前面已经反复说过了,ruby的定义代码即是可执行的。因为它的类(模块)的定义体本身即是一个对象Class类(Module类)的对象。
我来说两句

(可选)

日历

« 2009-01-08  
    123
45678910
11121314151617
18192021222324
25262728293031

我的存档

数据统计

  • 访问量: 44
  • 日志数: 19
  • 建立时间: 2008-06-11
  • 更新时间: 2008-06-11

RSS订阅

Open Toolbar