在Scala中,如何在不是数据成员的类的主构造函数中定义局部参数,例如,仅用于初始化基类中的数据成员?

例如,在下面的代码中,如何在B类的主构造函数中正确定义参数b,以便它只生成临时本地参数而不是数据成员?

class A(var a: Int)

class B(?b?) extends A(b)

Randall,你的答案解释了当我引入一个增加属性a的方法inc时Scala编译器抱怨的原因,同时也改变了B类构造函数中参数的名称以匹配类A构造函数中的参数名称:

class A(var a: Int)

class B(a: Int) extends A(a) {

def inc(value: Int) { this.a += value }

}

Scala编译器输出:

$scala construct.scala

construct.scala:3: error: reassignment to val

def inc(value: Int) { this.a += value }

^

one error found

Scala抱怨,因为B类现在必须拥有一个私有的只读属性,因为它引用了inc.将B(a:Int)更改为B(var a:Int)会生成不同的编译器错误:

construct.scala:2: error: error overriding variable a in class A of type Int;

variable a needs `override' modifier

class B(var a: Int) extends A(a) {

^

one error found

添加覆盖也无济于事:

construct.scala:2: error: error overriding variable a in class A of type Int;

variable a cannot override a mutable variable

class B(override var a: Int) extends A(a) {

^

one error found

如何在B的主构造函数中的参数中使用与基类A的主构造函数中定义的属性相同的名称?

scala 主构造函数_在Scala中,如何在类的主构造函数中定义局部参数?相关推荐

  1. move std 函数 示例_确保(值类型)可拷贝类有默认构造函数

    C.43: Ensure that a copyable (value type) class has a default constructor C.43:确保(值类型)可拷贝类有默认构造函数 Re ...

  2. 如何将OpenCV中的Mat类绑定为OpenGL中的纹理

    https://blog.csdn.net/TTTTzTTTT/article/details/53456324 如果要调用外接的USB摄像头获取图像通常使用OpenCV来调用,如何调用摄像头请参考本 ...

  3. scala 编译插件_使用Scala插件在Griffon应用程序中编译和运行Scala代码

    scala 编译插件 用于Griffon的Scala插件 0.7.1版本现已发布. 这个插件可以在Griffon应用程序上编译和运行Scala代码. Scala插件使用LangBridge插件与其他J ...

  4. mybatisplus新增返回主键_第17期:索引设计(主键设计)

    表的主键指的针对一张表中的一列或者多列,其结果必须能标识表中每行记录的唯一性.InnoDB 表是索引组织表,主键既是数据也是索引. 主键的设计原则 1. 对空间占用要小上一篇我们介绍过 InnoDB ...

  5. bootstrap获取选中行的主键_深入分析Mybatis 使用useGeneratedKeys获取自增主键

    摘要 我们经常使用useGenerateKeys来返回自增主键,避免多一次查询.也会经常使用on duplicate key update,来进行insertOrUpdate, 来避免先query 在 ...

  6. python编程怎么做游戏主播_如何成为一名成功的编程主播?

    怎么变成有人看真是所有干主播的人都想知道的. 但是说实话编程和游戏不一样,游戏大家去看,一是为了技术,二是为了娱乐,但不管是娱乐还是技术都是为了更好的放松. 而编程即便你用python等高级语言,根本 ...

  7. plsql导入数据主键_使用plsql添加数据并自动生成主键

    使用plsql添加数据并自动生成主键 步骤如下: 步骤一:新建需要创建的表如: -- Create table create table IRC_SYS_DATADIC ( datadic_id VA ...

  8. 如何正确的使用Java8中的Optional类来消除代码中的null检查

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:一书生VOID lw900925.github.io/jav ...

  9. 使用Java8中的Optional类来消除代码中的null检查

      作者:一书生VOID lw900925.github.io/java/java8-optional.html Optional类是Java 8新增的一个类,用以解决程序中常见的NullPointe ...

最新文章

  1. springBoot启动时让方法自动执行的几种实现方式
  2. PAT甲级——1102 Invert a Binary Tree (层序遍历+中序遍历)
  3. Linux各发行版流行度统计数据与排名
  4. 排序算法时间复杂度、空间复杂度、稳定性整理
  5. flutter项目打包.exe文件发布windows版
  6. 随机迷宫 c语言思路,[原创]递归随机迷宫生成算法详解
  7. matlab gui学习手记_MATLAB论坛不可错过的30例GUI源代码
  8. python入门心得_记初学python的一些心得
  9. IDEA项目 let报错爆红
  10. C语言之局部变量全局变量变量存储方式
  11. virtual box 针对Unable to load R3 module 解决方案
  12. c#中params关键字应用
  13. 从零开始玩人工智能-机器人服务-03
  14. python3.9新特性_Python 3.9正式版,新特性提前一睹为快
  15. 10月14号 - 15号 上海 IDC DX 大会
  16. 华三服务器虚拟化交换机配置聚合,华三交换机(S5130)初始化配置讲解
  17. 青光眼 程序员_青光眼-如何不失明:让我们谈谈治疗方法…
  18. 【swap】swap使用过高的处理方法
  19. 【问答】区块链遇到Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is heWaiting for
  20. 使用Kaiju无组装计算宏基因组数据物种注释相对丰度

热门文章

  1. Vue2.x 踩坑与总结
  2. 2013年大数据全球技术峰会观后感
  3. Java判断字符串的开头和结尾
  4. activiti自定义流程之Spring整合activiti-modeler5.16实例(四):部署流程定义
  5. CSS3技巧:利用css3径向渐变做一张优惠券(转)
  6. 何雯娜 (为奥运冠军名字作诗)
  7. react-router5.x 的配置及其页面跳转方法和js跳转方法
  8. A Convolutional Neural Network for Modelling Sentences阅读笔记
  9. python使用tkinter做界面之颜色
  10. Educational Codeforces Round 40 (Rated for Div. 2)