访问由构造函数在抽象类中创建的字段(Scala) [英] Access a field created by the constructor in an abstract class (Scala)

查看:118
本文介绍了访问由构造函数在抽象类中创建的字段(Scala)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个实现一个方法的抽象类。

I have an abstract class that implements one method.

如何访问参数 internalValue (set

How can I access the parameter internalValue (set by the abstract class constructor?)

abstract class Value(internalValue:Int) {
    def equal( v:Value ): Boolean

    def notEqual( v:Value ): Boolean = {

        //here I get an error on v.internalValue:
        //"value internalValue is not a member of Value"
        (internalValue != v.internalValue)
    }
}

case class Value1(internalValue:Int) extends Value(internalValue){
    def equal( v:Value1 ): Boolean = {
        //this works correctly
        (internalValue == v.internalValue)
    }
}

谢谢。

推荐答案

internalValue 定义为 val

abstract class Value(val internalValue: Int)

o如果您担心封装(名称为 internalValue 的建议),则可以使用 private val

or if you are concerned about encapsulation (which the name internalValue suggests) you can use private val:

abstract class Value(private val internalValue: Int)

完全不声明任何修改等效于等效(?),类似于 private [this] ,这意味着: 只有该特定实例的 Value 可以访问此私有字段

Not declaring any modified at all is effectively equivalent (?) similar to private[this] which means: only this particular instance of Value can access this private field.

这篇关于访问由构造函数在抽象类中创建的字段(Scala)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆