我一直在学习 scala,我不得不说这是一门非常酷的语言。我特别喜欢它的模式匹配功能和函数文字,但我来自 javascript、ruby 背景,我最喜欢这些语言的模式之一是惰性函数和方法定义模式。javascript中的一个例子是
var foo = function() {
var t = new Date();
foo = function() {
return t;
};
return foo();
};
稍加调整的相同代码在 ruby 中工作,您只需在执行计算后使用单例对象重新定义方法。当涉及昂贵的计算并且您不提前知道是否需要结果时,这种事情非常方便。我知道在 scala 中我可以使用缓存来模拟相同类型的结果,但我试图避免条件检查,到目前为止我的实验返回了否定结果。有谁知道scala中是否有惰性函数或方法定义模式?
注意:javascript 代码来自 Peter Michaux 的网站。