Ruby 通过方法调用传递一个值,该方法在调用结束之前一直未使用
我有嵌套的方法调用。在嵌套方法调用期间,在某个点创建一个值Ruby 通过方法调用传递一个值,该方法在调用结束之前一直未使用,ruby,Ruby,我有嵌套的方法调用。在嵌套方法调用期间,在某个点创建一个值dataForLastStep,并完整地传递,直到最后一个方法。方法如下所示: (dataForLastStep由methodOne中的启动数据计算得出) 然而,它似乎不太优雅。还有其他想法吗?您还没有弄清楚在哪里创建了dataForLastStep。我假设它是根据methodOne中的startingData计算出来的 一种方法是将dataForLastStep保留为实例变量。然后,您可以稍后远程引用它,只要它是从同一实例调用的 def
dataForLastStep
,并完整地传递,直到最后一个方法。方法如下所示:
(dataForLastStep由methodOne中的启动数据计算得出)
然而,它似乎不太优雅。还有其他想法吗?您还没有弄清楚在哪里创建了
dataForLastStep
。我假设它是根据methodOne
中的startingData
计算出来的
一种方法是将dataForLastStep
保留为实例变量。然后,您可以稍后远程引用它,只要它是从同一实例调用的
def methodOne(startingData)
data = some_stuff(startingData)
@dataForLastStep = some_other_stuff(startingData)
methodTwo(data)
end
def methodTwo(data)
dataStep3 = still_some_other_stuff(data)
methodThree(dataStep3)
end
def methodThree(data)
another_stuff(data, @dataForLastStep)
end
您尚未明确上次步骤的
dataForLastStep
的创建位置。我假设它是根据methodOne
中的startingData
计算出来的
一种方法是将dataForLastStep
保留为实例变量。然后,您可以稍后远程引用它,只要它是从同一实例调用的
def methodOne(startingData)
data = some_stuff(startingData)
@dataForLastStep = some_other_stuff(startingData)
methodTwo(data)
end
def methodTwo(data)
dataStep3 = still_some_other_stuff(data)
methodThree(dataStep3)
end
def methodThree(data)
another_stuff(data, @dataForLastStep)
end
您所说的“方法链”不是Ruby上下文中通常所指的方法链。在
methodOne
中dataForLastStep
来自哪里?您所说的“方法链”是什么不是Ruby上下文中通常所指的方法链。methodOne
中的dataForLastStep
来自何处?我可能会将所有数据都保存在实例变量中,而不是四处传递,不仅仅是dataForLastStep
@Stefan,在不同方法中使用参数data
会引用不同的值<methodthird
中的code>data是dataStep3
中的methodTwo
。这是棘手的部分。是的,的确如此。我想到了一个小类,它接受初始数据(通过初始化),将其存储在实例变量中,并通过其方法对封装的数据进行操作(修改它,将部分提取到其他实例变量中,等等)@sawa对此表示感谢。但是,当我正在读取连续的RabbitMQ消息流时,我需要每个消息的dataForLastStep
都是唯一的,因此我不确定是否可以使用实例变量。我可能会将所有数据保留在实例变量中,而不是四处传递,不仅仅是dataForLastStep
@Stefan,在不同方法中使用参数data
会引用不同的值<methodthird
中的code>data
是dataStep3
中的methodTwo
。这是棘手的部分。是的,的确如此。我想到了一个小类,它接受初始数据(通过初始化),将其存储在实例变量中,并通过其方法对封装的数据进行操作(修改它,将部分提取到其他实例变量中,等等)@sawa对此表示感谢。但是,当我正在读取连续的RabbitMQ消息流时,我需要将dataForLastStep
对于每条消息都是唯一的,因此我不确定是否可以使用实例变量。