Scala - 辅助构造函数总是必须调用另一个构造函数有什么好处?

2024-02-13

来自 Java 世界,我不明白 Scala 中对辅助构造函数的限制有什么帮助。

在Java中,我知道我们可以有多个构造函数,只要它们的签名不同。

在 Scala 中,辅助构造函数中的第一个调用必须是另一个辅助构造函数或类的主构造函数。为什么?这不会让 Scala 受到更多限制吗?


Scala 本质上保证主构造函数将始终被调用,因此它为类提供了单一入口点;永远。您始终知道,无论您使用哪个辅助构造函数来创建对象,都会调用主构造函数。

您是否曾经历过在 Java 中的(例如)无参数构造函数中进行所有良好的初始化,然后您(将来)或其他人创建另一个构造函数,然后您的对象未正确初始化并开始出现错误行为?也许不是世界上最好的设计,但我遇到了这个,这并不有趣。

好吧,在 Scala 中你永远不必担心这个,如果你的主构造函数中有一些东西,它总是会被调用,否则代码将无法编译。用我的话说,这不是限制,而是“心灵的平静”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Scala - 辅助构造函数总是必须调用另一个构造函数有什么好处? 的相关文章

随机推荐

  • 找到多个集合的交集的最佳方法?

    我有一个集合列表 setlist s1 s2 s3 我想要 s1 s2 s3 我可以编写一个函数来通过执行一系列成对的操作来完成此操作s1 intersection s2 etc 有推荐的 更好的或内置的方法吗 从 Python 2 6 版
  • Python 安装程序在初始化步骤被阻止

    我试图使用安装程序在我的计算机上安装Python3 6 但安装程序在初始化步骤被阻止 我想知道为什么会发生这种情况 我也尝试了Python2 7 但它也在同一个地方被阻止 它在这里被阻止 取消选中为所有用户安装的选项 这为我排序了
  • 在 Swift 中以编程方式返回到之前的 ViewController

    我通过单击按钮将用户发送到页面 该页面是一个UITableViewController 现在 如果用户点击某个单元格 我想将他推回到上一页 我想到了类似的事情self performSegue back 但这似乎是一个坏主意 正确的做法是什
  • CreateProcessAsUser 不绘制 GUI

    我有一个在 SYSTEM 帐户下运行的 Windows 服务 用于检查每个登录用户是否正在运行特定的应用程序 如果应用程序未运行 服务将启动它 在相应的用户名下 我正在尝试使用 CreateProcessAsUser 来实现我的目标 该服务
  • 在数据表中正确渲染迷你图

    在下面发布的示例中 我尝试将 jquery sparkline 库中的迷你图渲染为 jquery dataTables 表中的数据列 加载下面的示例效果很好 但仅限于第一页 如果我单击 下一步 而不是将数据呈现为迷你图 它只会呈现数字 如果
  • Apache 背后的代理 React 服务器

    我刚刚使用 create react app 创建了一个 React 应用程序 该应用程序从端口 3000 启动 很好 我想使用前缀访问应用程序 在我的例子中是 node 和端口 80 即http localhost 节点 http loc
  • PHP 函数错误和成功模式

    当函数正常执行时 从 PHP 函数返回错误的最佳方法是什么 Example public function login user pw if this gt verifyUser user return error about invali
  • Google foobar 响应错误(400)

    我正在尝试解决Google的问题foob ar挑战 http www google com foobar 我不会向其他人破坏实际问题 但标题是 拯救 Beta Rabbit 我的解决方案是用 Java 编码的 每次我尝试验证它时 我都会得到
  • 在单独的表单上更改 NotifyIcon

    我有一个带有 NotifyIcon 的表单 Form1 我有另一个表单 Form2 我想更改 NotifyIcon 的图标 每当我使用此代码时 我都会在系统托盘中显示一个额外的图标 而不是更改当前图标 Form1 ico 是 NotifyI
  • 如何提示用户选择保存文件的位置?

    在我的主表单中 我有一个名为 SavePDFDocument 的方法 private void SavePDFDocument PDFWrapper pdfWrapper new PDFWrapper pdfWrapper CreatePD
  • getResponseCode 中的 HttpURLConnection 随机出现 SocketTimeoutException

    我在 con getResponseCode 中收到以下错误 java net SocketTimeoutException failed to connect to example com port 80 after 3000ms at
  • 如何在 SQLAlchemy 中实现空合并运算符?

    或者我该如何让这个东西发挥作用 我有一个 Interval 对象 class Interval Base tablename intervals id Column Integer primary key True start Column
  • Plotly.js:初始缩放

    我有 256 个数据点 当绘图首次出现时 我希望 x 轴自动缩放到沿 X 轴的特定范围 有办法吗 我必须以某种方式打到 D3 吗 就像是 Plotly plot graph some data trace xaxis range 0 1 t
  • 导入 const 数组 React

    我尝试将一个数组导入到我的父组件中 并将该数据作为道具发送给他的孩子 import Seed from const Seed export default class ProductList extends React Component
  • 在 Ansible 中动态构建变量名称

    我有一个剧本 它将迭代不同环境 dev 和 prod 中的一组主机 主机所处的环境会改变它所拥有的其他变量 例如 这是在我的 vars main yml 文件中 folder list DEV folder 1 folder 2 folde
  • 以给定概率生成随机数

    我有一个问题 基本上是以下 matlab 问题的矢量化 R 解决方案 matlab 生成给定概率的随机数 https stackoverflow com questions 13914066 generate random number w
  • 不带扩展名的文件名的正则表达式

    我正在寻找一个正则表达式 它将捕获没有扩展名的文件名 并在反向引用中给我该名称 以便我可以添加扩展名 因此 如果有人输入 xyz 我可以将其替换为 xyz html 不应捕获 xyz php 或 xyz html Thanks 使用以下正则
  • 写入大文件

    我尝试写入一个大文件 但它似乎不适用于大于 2GB 的文件 我尝试过使用 boost iostreams file sink 这只是升压流的限制吗 还有其他方法可以在 Win64 和 win32 上写入大文件吗 这取决于 您正在使用的文件系
  • Application.LoadComponent 出现线程错误(键已存在)

    MSDN 说 System Windows Application 的公共静态成员是线程安全的 但是当我尝试使用多个线程运行我的应用程序时 出现以下异常 ArgumentException An entry with the same ke
  • Scala - 辅助构造函数总是必须调用另一个构造函数有什么好处?

    来自 Java 世界 我不明白 Scala 中对辅助构造函数的限制有什么帮助 在Java中 我知道我们可以有多个构造函数 只要它们的签名不同 在 Scala 中 辅助构造函数中的第一个调用必须是另一个辅助构造函数或类的主构造函数 为什么 这