打印

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

本帖已经被作者加入个人空间 本主题由 quzhongwei 于 2008-6-9 23:00 设置高亮


class A
  def b
    puts "in method b"
  end
  b
end


输出为:undefined local variable or method `b' for A:Class (NameError)
为何?

TOP

引用:
原帖由 vintager 于 2008-7-5 21:33 发表
class A
  puts "A"
  def WoW
   puts "WoW"
  end
end
居然有输出,真是奇怪啊,这不是一个类定义吗,并没有实例化啊?
我已经用红色放大的文字说明了,你仔细看看好嘛?

TOP

晕了,以前接触C#的 这个程序看了半个小时才 有点明白 是不是太笨了~~~
我是一只菜~菜~菜~菜鸟~~~~嗷~嗷嗷嗷

TOP

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

TOP

引用:
原帖由 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,这样就变为是类方法了。

TOP

前面已经反复说过了,ruby的定义代码即是可执行的。因为它的类(模块)的定义体本身即是一个对象Class类(Module类)的对象。

TOP

果然受益匪浅

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

TOP

弱弱的问一句,用记事本建完一个a.rb后,在里面写下puts "HelloWorld",并保存.那我该如何执行它呢?

TOP

在win下
ruby a.rb
在linux下
1 ruby a.rb
2  在a.rb的第一行写上 #!/path/ruby (path改成你的ruby实际路径),然后chmod 755 a.rb,再./a.rb 即可
本帖最近评分记录
  • wscc111 R币 +9 我很赞同 2008-8-6 16:41

TOP

3KS 黑馬 大哥!

3KS 黑馬 大哥!3KS 黑馬 大哥!

TOP

疑问

class A
puts "aa"
def c
 puts "bb"
end
puts "cc"
end
 输出是
aa
cc
 我感觉黑马说的是可执行的可以理解,程序入口点怎么理解呢

TOP

输出的时候为什么一闪就没了啊
 我都没看清楚显示的是什么啊

TOP

class A
 def function
  puts "this is a method"
 end
 def main
  self.function
  end
end

为什么没输出东西来啊
一个类内有个方法 这个方法输出一句话
然后调用这个方法 怎么没输出东西????

TOP

ruby不是把main作为主函数的。

TOP

虽然对Ruby现在还是一窍不通,但LZ的意思已经明白了。
LZ是要我们区分Ruby和其他语言,Ruby只要遇到可执行语句就会执行,而其他语言必须有个入口方法比如main()
不知道理解是否正确

TOP

2008-11-22 20:29 Crawled by CCBot/1.0 (+http://www.commoncrawl.org/bot.html) @38.103.63.61