scala中参数的默认“类型”是什么?是Val吗?

时间:2017-03-18 18:26:31

标签: scala

我有一个像这样的简单课程。

我没有指定参数是val还是var。 什么类型的参数是nameprice

 class Car(name:String, price:Float){ 
 }

3 个答案:

答案 0 :(得分:2)

原则上接受的答案是正确的。但实际上,如果传递的参数用于def的实现,它将成为一个实例字段,就像使用private val声明一样(除了没有private def将为它生成getter)。

例如:

class Foo(bar: Bar) {
    def foo: Bar = bar
}

可以反编译成以下java转换(使用javap

public class Foo {
  private final Bar bar;
  public Bar foo();
  public Foo(Bar);
}

有关详细信息,另请参阅my answer on this thread

答案 1 :(得分:0)

如果将类参数声明为varval,它将成为实例变量。如果您没有指定,则不会。因此,它不等同于valvar

就是否可以重新分配而言,类参数就像普通参数一样,不能重新分配。

答案 2 :(得分:0)

通过@ sepp2k添加答案:如果您使用case class,则默认值为val

 case class Foo(bar: Bat)

在这种情况下,barvalpublic可访问性。