我有一个 ruby 脚本,我想在其中将变量初始化/重置封装在一个方法中。我创建了以下变量重置方法。但是在 irb 中,这个方法运行良好,但是当我在运行这样的方法后打印变量时initer
:它没有完成这项工作。
def intiter
cntr = 0
rec = 0
timer = 0
end
我有一个 ruby 脚本,我想在其中将变量初始化/重置封装在一个方法中。我创建了以下变量重置方法。但是在 irb 中,这个方法运行良好,但是当我在运行这样的方法后打印变量时initer
:它没有完成这项工作。
def intiter
cntr = 0
rec = 0
timer = 0
end
initer
您的方法仅在;范围内设置局部变量 当该方法结束时,您设置的那些变量将0
消失在以太中。您需要引用类、实例或全局变量才能在您的方法中设置它们。类变量以该类的所有实例开头@@
并由该类的所有实例共享;@
实例变量以类的特定实例中的任何东西开头,并且可以被任何东西访问;全局变量从程序中的任何地方开始$
并且可以在任何地方使用,但可能会受到意外更改的影响。在不了解更多代码以及您的整体设计是什么的情况下,我无法为您提供更多帮助。
编辑:我包含的上一个链接不是正确的部分。尝试http://docs.ruby-doc.com/docs/ProgrammingRuby/html/tut_classes.html了解更多信息。
此外,为什么(辛酸)的红宝石指南很好......无论如何,如果它是你的一杯茶。我喜欢。
def
关键字以 new 开头,这意味着此处定义的scope
任何变量都是全新的,并且在end
命中关键字时将被销毁。您正在创建这些变量的全新副本,将它们设置为 0,然后销毁它们。原始变量永远不会被触及。