在从任一类或对象(I假定两者的治疗将是相似的)下面的代码片断,:优选的方式声明和初始化实例/类变量
private var consumer : Consumer = _
def getConsumer(channel : Channel) = if (consumer != null) {
consumer }
else {
// build it
}
我不相信,我们会盲目地只是把它周围的一个选项在所有情况下:
private var consumer : Option[Consumer] = None
def getConsumer(channel : Channel) = consumer.getOrElse(
// build it
consumer = Some(/* built val */)
}
是上面是完全可能的,但它是我的预感有替代品在那里。见解欣赏。
编辑消费者对象被直接发送给第三方api;因此这里不需要修改/修改需要更改签名。
下面是一个例子:
channel.basicConsume(queue, true, getConsumer(channel))
OR
// assuming consumer were already constructed with a Channel instance in the constructor
channel.basicConsume(queue, true, consumer)
这看起来像你正在试图重新创建'lazy val'功能。也许看看这是怎么完成的。 – ggovan
Thx为小费。我现在正在研究懒惰的val(并且你是对的 - 我不是很熟悉它们) – javadba
@ggovan我们如何处理懒惰val的Channel参数? – javadba