我有几种基于step_1
和x
变量的y
方法。
step_2
根据step_1
- 方法创建新方法,但不需要变量(只是通过)!
同样适用于step_3
(基于step_2
- 方法)。
我的问题是我有大约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
感谢您的任何建议
答案 0 :(得分: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
答案 1 :(得分:0)
alias step_3 :step_1
或者如果你想要经过中间步骤,
alias step_2 :step_1
alias step_3 :step_2