Ruby方法似乎不起作用

时间:2013-04-02 15:03:59

标签: ruby-on-rails ruby irb

我有一个ruby脚本,我想在一个方法中封装变量初始化/重置。我为变量重置创建了以下方法。 但是在irb中,这个方法运行正常,但是在运行如下方法后打印变量时:initer。它没有做到这一点。

def intiter
  cntr = 0
  rec = 0
  timer = 0
end

2 个答案:

答案 0 :(得分:4)

您的方法仅在initer范围内设置局部变量;当该方法结束时,您设置为0的那些变量将消失在以太网中。您需要引用类,实例或全局变量才能在方法中设置它们。类变量以@@开头,并由该类的所有实例共享;实例变量以@开头,并且可以由类的特定实例中的任何内容访问;全局变量以$开头,可以在程序中的任何位置使用,但可能会发生意外更改。如果您不了解更多代码以及您的整体设计,那么我可以为您提供更多帮助。

编辑:我之前的链接包含在正确的部分中。请尝试http://docs.ruby-doc.com/docs/ProgrammingRuby/html/tut_classes.html了解更多信息。

另外,why's (poignant) guide to ruby很好......如果它是你的一杯茶,无论如何。我喜欢它。

答案 1 :(得分:1)

def关键字开始一个新的scope,这意味着此处定义的所有变量都是全新的,并且会在end关键字被触发时销毁。您正在创建这些变量的全新副本,将它们设置为0,然后销毁它们。永远不会触及原始变量。