Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
任何将ruby中的变量重置为其原始值的方法_Ruby - Fatal编程技术网

任何将ruby中的变量重置为其原始值的方法

任何将ruby中的变量重置为其原始值的方法,ruby,Ruby,假设我在initialize方法中声明了变量@counter=0,在代码的某些部分,我想再次将其重置为原始值。虽然我可以手动执行@counter=0,但我想知道是否有任何方法可以将其重置为原始指定值。例如:@counter.reset def initialize @counter = 0 ... end def first @some_string.each do |f| if f == '' @counter += 1 end @counte

假设我在
initialize
方法中声明了变量
@counter=0
,在代码的某些部分,我想再次将其重置为原始值。虽然我可以手动执行
@counter=0
,但我想知道是否有任何方法可以将其重置为原始指定值。例如:
@counter.reset

def initialize
  @counter = 0
  ...
end
def first
  @some_string.each do |f|
    if f == ''
      @counter += 1 
    end
    @counter = 0 # Want to change it here
  end
end

如果我理解正确,请尝试:

def initialize
    reset_counter
    ...
end

def reset_counter
    @counter = 0;
end

def First
    @some_string.each do |f|
        if f == ''
            @counter += 1 
        end
    end
    reset_counter
end

在Ruby中,变量不是对象,你不能告诉它们做任何事情。对于一个变量,您可以做两件事:赋值和取消引用。

难道不是更简单吗?或者您的意思是它可能被初始化为一个非
0
的值?是的,它更简单,但..只是想知道我们是否有任何方法可以设置为其初始化状态而不必手动修改它。@CarySwoveland..很抱歉,我听不懂您的意思..如果您在
初始化
中指定
@counter=val
,可能
@counter=@original\u counter=val
def reset\u counter@counter=@original\u counter;结束
?您不能在实例变量(即,
@counter.reset
)上定义方法。Rahul,我们通常使用所有小写字母(和可选下划线)作为变量和方法的名称(即,
first
而不是
first
)。另外,
def first
缺少一个
end
。通常,当在问题中给出
initialize
时,它显示为在一个类中(例如,
class MyClass;def initialize…end…end
),尽管没有法律规定必须这样做。此外,在发布之前,您应该在IRB或PRY中测试您的代码。例如,这可能会出现缺少的
结尾。这很好。但我还是更喜欢做@counter=0,而不是做这么多…我想知道是否有任何快速方法可以做到这一点。如果你不再做任何事情,最短的方法就是你所说的:
@counter=0
好点。不知怎的,我想知道会有什么办法。非常感谢。