我有一个ruby脚本,我想在一个方法中封装变量初始化/重置。我为变量重置创建了以下方法。
但是在irb中,这个方法运行正常,但是在运行如下方法后打印变量时:initer
。它没有做到这一点。
def intiter
cntr = 0
rec = 0
timer = 0
end
答案 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,然后销毁它们。永远不会触及原始变量。