有没有一种方法我每次使用它时都会重置一个定义的变量?

时间:2015-11-08 15:06:08

标签: 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)每次使用都会重置?

2 个答案:

答案 0 :(得分:0)

试试这个:

arrow

打印(使用puts):

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}"

答案 1 :(得分:0)

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

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

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

这可能是错误的代码。为什么?全球都很糟糕。当我们幸运地拥有像这样纯洁的数学函数时,像这样的变异状态是一种战争罪行并且可能引起骚乱。我们有一个不需要改变状态的数学函数。我们真的不希望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或一般编程,请阅读大量代码并观看现场工作人员的截屏视频。这是升级一点点的最快路线。如果不立即发生就可以了,下次你尝试会更容易(多年后也许)。

相关问题