微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Scala的参数字段和构造函数参数

我知道参数字段(如下例中的x)表现得像普通字段;所以你可以用方法引用它们:

class Test(val x: Int) { // x is a parametric field
  override def toString = "Test: " + x;
}

但是,如果删除关键字val,代码仍会编译(并查看.class输出,x仍然是该类的成员).所以我想知道,参数字段(即上面的val x:Int)和构造函数参数(x:Int)之间有什么区别?

(在我的脑海中,我希望像x这样的构造函数的范围不包括像toString这样的方法.)

解决方法

如果没有val关键字,您的代码类似于:class Test(private [this] val x:Int){…}.因此,xis可用于全班,但不能从外部使用.

在你的问题中没有提到它,但它也可能有用:在case类中,认修饰符是val.因此,案例类Test(x:Int){…}等同于案例类(val x:Int){…}.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐