在嵌套函数中传递变量的适当解决方案(在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
一样。它看起来很有希望。我试试看。谢谢