Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.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,这是密码 x = 10 y = 11 def z(q,x,y) q = q - (x + y) end q = 30 z(q,x,y) puts "#{q}" q = 40 z(q,x,y) puts "#{q}" 有没有一种方法可以让我每次使用z(q,x,y)时都重置它?试试这个: x = 10 y = 11 def z(q,x,y) q = q - (x + y) end q = 30 z1 = z(q,x,y) puts "#{z1}" q = 4

这是密码

x = 10
y = 11
def z(q,x,y)
   q = q - (x + y)
end
q = 30
z(q,x,y)
puts "#{q}"     
q = 40 
z(q,x,y)
puts "#{q}"
有没有一种方法可以让我每次使用z(q,x,y)时都重置它?

试试这个:

x = 10
y = 11

def z(q,x,y)
   q = q - (x + y)
end

q = 30
z1 = z(q,x,y)
puts "#{z1}"     

q = 40 
z2 = z(q,x,y)
puts "#{z2}"
打印(使用puts):


通常,您不应该修改参数。在函数z中,q是一个已经设置好的参数,但我想你也希望它是一个外部变量,并改变它的状态

这是你想做的,但请不要这样做

这可能是错误的代码。为什么?全球化是不好的。当我们有幸拥有一个如此纯净的数学函数时,这种变异状态就是一种战争罪,可能会引发骚乱。我们有一个不需要改变状态的数学函数。我们真的不想让z负责:

  • 计算新值
  • 设置局部变量以供以后使用
第二部分是诅咒部分。Z不需要知道它的外部世界

看看这个,它与这里已经给出的另一个答案类似:

x = 10
y = 11

def z(q, x, y)
  q - (x + y)
end

q = z(30, x, y)
puts q

q = z(40, x, y)
puts q

如果你是从Ruby或编程开始的,请阅读大量代码并观看现场工作人员的屏幕广播。这是最快的升级路线。如果不立即发生也没关系,下一次尝试会更容易(可能几年后)。

请解释一下你想要发生什么。我希望z(q,x,y)在使用时起作用,所以第一次推杆是9,第二次推杆是19
x = 10
y = 11

def z(q,x,y)
   $q = q - (x + y)
end

$q = 30
z($q,x,y)
puts "#{$q}"

$q = 40
z($q,x,y)
puts "#{$q}"

# Prints:
# 9
# 19
x = 10
y = 11

def z(q, x, y)
  q - (x + y)
end

q = z(30, x, y)
puts q

q = z(40, x, y)
puts q