1

我有几个step_1基于xy变量的方法。

step_2基于step_1-methods 创建新方法,但不需要变量(只是通过)!

step_3(基于step_2-methods)也是如此。

我的问题是我有大约 20种step_2方法,其中包含数十种step_1方法(5 种不同的方法)。对于每一个我都必须传递相同的两个变量。我需要这种结构来进行迭代。

现在,有没有办法在不使用全局变量的情况下直接将变量传递step_3(x, y)给?step_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

感谢您的任何建议

4

2 回答 2

3

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

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
于 2013-04-26T15:59:21.430 回答
0
alias step_3 :step_1

或者如果你想通过中间步骤,

alias step_2 :step_1
alias step_3 :step_2
于 2013-04-26T15:57:11.503 回答