Лучше взгляните на вывод javap (включая закрытые члены), прежде чем сделать вывод, что он обошел все поля для Tuple2
, используемого в промежуточном сопоставлении с образцом.
Начиная с Scala 2.8.0.RC2, этот код Scala (выделен для компиляции):
class BasicData
{
def basic1: Int = 23
def basic2: String = "boo!"
}
class Helper(v: BasicData)
{
def derived1: Int = v.basic1 + 19
def derived2: String = v.basic2 * 2
}
class Bar(val v: BasicData)
class Foo(v: BasicData)
extends Bar(v)
{
val (derived1, derived2) = {
val helper = new Helper(v)
(helper.derived1, helper.derived2)
}
}
Производит этот Foo
класс:
% javap -private Foo
public class Foo extends Bar implements scala.ScalaObject{
private final scala.Tuple2 x$1;
private final int derived1;
private final java.lang.String derived2;
public int derived1();
public java.lang.String derived2();
public Foo(BasicData);
}