在嵌套函数中传递变量的适当解决方案(在ruby中)

在嵌套函数中传递变量的适当解决方案(在ruby中),ruby,function,variables,nested,Ruby,Function,Variables,Nested,我有几个step_1——基于x和y变量的方法 step_2基于step_1-方法创建新方法,但不需要变量(只需传递) 这同样适用于步骤3(基于步骤2-方法) 我的问题是我有大约20种步骤2-方法,其中包括几十种步骤1-方法(5种不同类型)。对于每一个,我必须传递相同的两个变量。 为了迭代的目的,我需要这种构造 现在,有没有一种方法可以直接将变量从步骤3(x,y)转换到步骤1(x,y)而不使用全局变量 # example def step_1 (x, y) return x + y end

我有几个
step_1
——基于
x
y
变量的方法

step_2
基于
step_1
-方法创建新方法,但不需要变量(只需传递)

这同样适用于
步骤3
(基于
步骤2
-方法)

我的问题是我有大约20种
步骤2
-方法,其中包括几十种
步骤1
-方法(5种不同类型)。对于每一个,我必须传递相同的两个变量。 为了迭代的目的,我需要这种构造

现在,有没有一种方法可以直接将变量从
步骤3(x,y)
转换到
步骤1(x,y)
而不使用全局变量

# example

def step_1 (x, y)
  return x + y
end

def step_2 (*foo)
  return step_1(*foo)
end

def step_3 (*foo)
    return step_2(*foo)
end

x, y = 2, 2 # example

puts step_3(x, y) # ==> 4
谢谢你的建议

alias step_3 :step_1
或者如果你想通过中间步骤

alias step_2 :step_1
alias step_3 :step_2
当我读到“我必须传递相同的两个变量”时,这自然会让我想起创建一个简单容器的想法,您可以传递:

class NumberTuple
  attr_accessor :x
  attr_accessor :y

  def initialize(x, y)
    @x = x
    @y = y
  end
end

tuple = NumberTuple.new(2,2)
step_3(tuple)
这通常会导致这样的结论:创建一个简单的计算类,可以将所有这些状态内部化。这就是类实例擅长的方面:

class NumberCalculator
  def initialize(x, y)
    @x = x
    @y = y
  end

  def step_3
    step_2
  end

  def step_2
    step_1
  end

  def step_1
    @x + @y
  end
end

calculator = NumberCalculator.new(2,2)
calculator.step_3

我真的不明白它是如何工作的,以及如何集成到我的示例中。你能给我一个线索吗?我想你不会想把符号和常量混在一起的。我会做
别名:step_2:step_1
。但是,虽然我认为您的答案适用于@ericMTR提供的特定示例,但在更一般的情况下,它不适用于
步骤1
步骤2
,和
步骤3
不做完全相同的事情——只涉及相同的变量@ericMTR:
别名:x:y
基本上可以调用方法
y
,就像它被命名为
x
一样。它看起来很有希望。我试试看。谢谢