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
对于每条消息都是唯一的,因此我不确定是否可以使用实例变量。