Scala:提取值以绕过JVM方法长度

时间:2012-11-05 16:55:42

标签: scala refactoring

我有一个长度超过64k JVM限制的方法。看起来没有什么简单的方法可以绕过这个问题,因此我可能不得不重构我的代码。我是Scala noob,我需要一些建议:

def apply = {
...
val container = Map(...<Some Really Long Input>...)
val anotherContainer = Map(...<Some Really Long Input>...)
...
}

如何知道其内容取决于 apply 方法中的某些数据,我如何提取上述变量的内容?

1 个答案:

答案 0 :(得分:2)

你可以滥用闭包来从方法中获取一些代码:

val container = (() => Map(...<Some Really Long Input>...))()

我真的希望这是自动生成的代码。如果不是,那么有很多更好的方法可以重构代码并使其更具可读性和可维护性。其中之一就是将创建地图的代码放入自己的方法中,并将apply方法中的数据作为参数传递。