并不是说我实际上已经接近这个极限,但我一直想知道:为什么他们停在 Function22
/Tuple22
. JVM限制?随意选择?
最佳答案
函数和元组被编译器重写为对象,并且只有 Function0
通过 Function22
和 Tuple0
通过 Tuple22
被定义。我认为 22 的限制完全是任意的,但有限制的原因不是。
可以这样想:要运行 Scala 应用程序,运行它所需的类必须存在。如果编译器会为函数动态创建类,那么这些类将不会包含在 Scala 库 JAR 中,因此您必须将它们包含在您的应用程序中。这可以工作,但是您会遇到类的完全限定名称应该是什么的问题:如果它们对于所有应用程序都是相同的,那么您就会发生冲突,因为库将包含相同的类,并且如果名称不是同样,您最终会遇到不兼容问题——库中的函数与您的应用程序中的函数不同。
关于scala - 为什么 Scala 函数限制为 22 个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4152223/