Scala 中单例对象的解释

2024-02-05

我得到的编码是,您基本上提供了一个“object SomeClass”和一个“class SomeClass”,并且伴随类是类声明,而对象是单例 http://en.wikipedia.org/wiki/Singleton_pattern。您无法创建其中的实例。所以......我的问题主要是在这个特定实例中单例对象的目的。

这基本上只是在 Scala 中提供类方法的一种方式吗?喜欢+基于方法Objective-C http://en.wikipedia.org/wiki/Objective-C?

我正在读Scala 编程 https://rads.stackoverflow.com/amzn/click/com/0981531644本书和第 4 章只讨论了单例对象,但没有详细说明为什么这很重要。

我意识到我可能有点超前了,稍后可能会更详细地解释。如果是这样,请告诉我。到目前为止,这本书相当不错,但它有很多“在 Java 中,你这样做”,但我的 Java 经验太少了,所以我有点错过了一些我担心的要点。我不希望这成为其中一种情况。

我不记得在任何地方读过Scala 编程 website http://booksites.artima.com/programming_in_scalaJava 是阅读本书的先决条件......


是的,伴随单例提供了与 Java(以及 C++、C# 等)静态方法等效的方法。

(事实上​​,为了 Java 互操作性,伴随对象方法是通过“静态转发器”公开的)

然而,单例远远超出了这个范围。

  • 单例可以从其他类/特征继承方法,这是静态无法完成的。
  • 单例可以作为参数传递(也许通过继承的接口)
  • 单例可以存在于周围类或方法的范围内,就像 Java 可以有内部类一样
  • 还值得注意的是,单例不一定是伴生类,定义单例而不定义伴生类是完全有效的。

这有助于使 Scala 成为一种比 Java 更加面向对象的语言(静态方法不属于object)。具有讽刺意味的是,考虑到它主要是根据其功能凭证进行讨论的。

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

Scala 中单例对象的解释 的相关文章

  • Scala - Java = ? (或者 Clojure - Java = ?)

    开发人员可以在不懂 Java 的情况下使用 Scala 吗 开发人员可以在不懂 Java 的情况下使用 Clojure 吗 注意 例如 我是一名 C 开发人员 我在不了解任何 VB 的情况下使用 NET 当然 WF 4 0 使用 VB 进行
  • Spark Scala:按小时或分钟计算两列的 DateDiff

    我在数据框中有两个时间戳列 我想获取它们的分钟差异 或者小时差异 目前我可以通过四舍五入获得日差 val df2 df1 withColumn time datediff df1 ts1 df1 ts2 但是 当我查看文档页面时https
  • Scala repl 抛出错误

    当我打字时scala在终端上启动 repl 它会抛出此错误 scala gt init error error while loading AnnotatedElement class file usr lib jvm java 8 ora
  • 映射存在类型列表

    我有一个要映射的存在类型对象的列表 像这样的东西 sealed abstract class IntBox val v Int case object IB1 extends IntBox 1 case object IB2 extends
  • 在scala / play框架中构建Json文件

    我正在使用 Play 框架和 Scala 我需要提供一个如下所示的输入 id node37 name 3 7 data children 如何使用 json 获取该格式 以下是 Play 框架网站上的示例 val JsonObject Js
  • 如何以最佳方式传递元组参数?

    如何以最佳方式传递元组参数 Example def foo Int Int def bar a Int b Int 现在我想传递的输出foo to bar 这可以通过以下方式实现 val fooResult foo bar fooResul
  • 以编程方式启动 Scala REPL?

    我想从命令行启动 Scala Swing 应用程序 然后在应用程序启动后 放入 Scala REPL 中以用作控制界面 理想情况下 我还想预先绑定一些变量名称 更好的是使用 REPL 的 Java2D 终端模拟器 但我找不到任何合适的东西
  • 如何将 scala 列表转换为 javascript 数组?

    有更简单的方法吗 document ready function var jsArray if scalaList null for id lt scalaList jsArray push id 很简单 如下所示 import play
  • Spark日期格式问题

    我在火花日期格式中观察到奇怪的行为 实际上我需要转换日期yy to yyyy 日期转换后 日期应为 20yy 我尝试过如下 2040年后失败 import org apache spark sql functions val df Seq
  • 如何在 Apache Spark 中通过 DStream 使用特征提取

    我有通过 DStream 从 Kafka 到达的数据 我想进行特征提取以获得一些关键词 我不想等待所有数据的到达 因为它是可能永远不会结束的连续流 所以我希望以块的形式执行提取 如果准确性会受到一点影响 对我来说并不重要 到目前为止 我整理
  • Scala 2.9 无法在 Windows XP 上运行“hello world”示例

    我正在尝试在 Windows XP 上使用 scala 2 9 1 Final 运行 HelloWorld 示例 object HelloWorld extends App println Hello World 文件另存为Hello sc
  • Akka Stream Graph 恢复问题

    我创建了一个图表来并行化具有相同输入的两个流 这些流产生 Future Option Entity 如果 flowA 失败 我想返回 Future None 但恢复似乎没有被调用 val graph Flow Input Future Op
  • 更改 build.sbt 自定义任务中的版本

    我在 build sbt 中定义了一个自定义任务 val doSmth taskKey Unit smth doSmth version 1 0 SNAPSHOT 但它不会改变版本 我真正想要的是自定义 sbt 发布任务 它将始终将相同的版
  • 模拟 BlazeClientBuilder[IO] 以返回模拟客户端[IO]

    我正在使用BlazeClientBuilder IO resource方法得到Client IO 现在 我想模拟客户端进行单元测试 但不知道该怎么做 有没有一个好的方法来嘲笑这个 我会怎么做 class ExternalCall val r
  • andThen 类型不匹配的 Scala 链接函数

    我有一堆函数可以清理文本并将它们分成单词 最小的例子 val txt Mary had a little nlamb val stopwords Seq a def clean text String String text replace
  • Slick和bonecp:org.postgresql.util.PSQLException:FATAL:抱歉,太多客户端已经错误

    当我在本地开发应用程序时 我使用以下命令启动我的 play2 应用程序sbt run 我喜欢如何更改代码 然后重新加载浏览器以查看我的更改 在大约 10 次代码更改之后 我收到 postgresql 太多连接错误 见下文 我的数据库连接使用
  • Java 8 Stream,获取头部和尾部

    Java 8 引入了Stream http download java net jdk8 docs api java util stream Stream html类似于 Scala 的类Stream http www scala lang
  • IntelliJ:线程“主”java.lang.NoClassDefFoundError中的异常:org/apache/spark/sql/types/DataType

    附言 有一个类似的问题here https stackoverflow com questions 40287289 java lang noclassdeffounderror org apache spark logging 但那是在
  • 单例模式和 std::unique_ptr

    std unique ptr唯一地控制它指向的对象 因此不使用引用计数 单例确保利用引用计数只能创建一个对象 那么会std unique ptr与单例执行相同 单例确保只有一个实例属于一种类型 A unique ptr确保只有一个智能指针到
  • 为什么自类型类可以声明类

    我知道 Scala 只能混合特征 这对于依赖注入和蛋糕模式是有意义的 我的问题是为什么我仍然可以声明一个需要另一个 类 但不需要特征的类 Code class C class D self C gt 这仍然编译成功 我认为它应该编译失败 因

随机推荐

  • 简单的分布式 Erlang

    我有一个简单的模块 module dist compile add 3 add From X Y gt From X Y 我正在启动两个节点 一与 erl sname foo 另一个与 erl sname bar 在我正在做的酒吧节点上 g
  • 速度较慢的 numpy.argmax/argmin 的更快替代方案

    我正在使用很多argmin and argmax在Python中 不幸的是 该功能非常慢 我已经做了一些搜索 我能找到的最好的就在这里 http lemire me blog archives 2008 12 17 fast argmax
  • Firefox 4中的Greasemonkey脚本,想更改网页上的一行代码

    好吧 我会尽量让这件事变得尽可能简单 但不会太含糊 我想更改网页上的一行代码 以防止出现预览窗格 原始代码行 div class previewpane 我想将上面的行替换为 div class previewpane previewpan
  • 文件加密与内容加密不同吗

    加密文件和加密文件内容之间有什么区别吗 如果是这样 两者该如何做 文件加密是从外部加密整个文件 例如通过在 Windows XP 资源管理器中右键单击 内容加密通常被用作文件加密的同义词 但两者是不同的 内容加密是指对文件的内容进行加密 或
  • Pandas 合并错误:MemoryError

    Problem 我正在尝试将两个相对较小的数据集放在一起 但合并会引发MemoryError 我有两个国家贸易数据汇总数据集 我试图将其合并到关键年份和国家 地区 因此需要对数据进行特殊设置 不幸的是 这使得使用concat正如这个问题的答
  • 理解非齐次 numpy 数组

    我最近开始使用 numpy 并注意到一件奇怪的事情 import numpy as np a np array 1 2 3 4 5 9 8 print a shape shape print a 1 0 在这种情况下 形状是2L 但是 如果
  • 从 awk 调用 python 脚本

    大多数解决方案都从 python 调用 awk 但我想反过来做 我有一个从文件中提取信息的 python 脚本 然而 所述文件名在 awk 脚本的列中引用 如何向 python 传递参数 s20s 文件名并从标准输出获取输入 我想将输出添加
  • 填充嵌入的 UITableViewController

    我有一个使用导航控制器的应用程序 在其中一个视图中 我有一个视图容器 其中嵌入了使用静态单元格的 UITableViewController 我需要使用从上一个视图传入的数据来填充此表视图控制器的标签 流程如下 View1 gt segue
  • 用整数哈希替换字符串名称有哪些好方法

    通常 数据驱动设计中的实体和组件或游戏代码的其他部分都会有名称 如果您想准确地找出正在处理的对象 则需要检查这些名称 void Player Interact Entity myEntity if myEntity gt isNearEno
  • formGroup 需要一个 FormGroup 实例。请传一份

    情况 我正在尝试在我的 Ionic 2 应用程序中制作一个非常简单的登录表单 无论我尝试什么 我都会不断收到此错误 formGroup expects a FormGroup instance Please pass one in 代码 页
  • 使用命令行参数从 python 制作 exe 文件

    我想从使用命令行参数 argv 的 python 脚本创建一个 exe据我所知 py2exe 不支持命令行参数 我能做些什么 编辑 我使用的是 GUI2Exe 工具 所以我错过了控制台标志 但接受的答案是完全正确的 setup consol
  • PHP 正斜杠匹配

    PHP 中如何检查某个字符串是否包含正斜杠 检查是否出现strpos http php net manual en function strpos php if strpos string FALSE Found 以整数形式返回位置 如果未
  • 如何读取 git-ls-tree 输出的模式字段

    git ls tree fb3a8bdd0ce 100644 blob 63c918c667fa005ff12ad89437f2fdc80926e21c gitignore 100644 blob 5529b198e8d14decbe4ad
  • CSS 中类的通配符 *

    我有这些我正在设计的 div tocolor 但我还需要唯一标识符 1 2 3 4 等 因此我将其添加为另一个类tocolor 1 div class tocolor tocolor 1 tocolor 1 div div class to
  • 使用 C++ WinAPI 在 Windows 10 上设置亮度

    我正在尝试在 Windows 10 计算机上设置亮度 显示器好像不支持setMonitorBrightness and setDeviceGammaRamp改变伽玛 白点等 所以我尽量不使用它 我正在尝试使用它来使其工作IOCTL VIDE
  • SendGrid API 动态 - 无法取消订阅工作

    我刚刚使用 sendgrid 设置了一封动态电子邮件 并使用 API 根据我的客户数据填写它 除了取消订阅部分之外 我已经完成了所有工作 我的电子邮件底部有一个取消订阅块 在代码编辑器中 代码如下所示 div class module st
  • Spark Streaming 无法从单个文件读取流数据

    我正在尝试从使用 Spark 流 API textFileStream 连续附加的文本文件中读取流数据 但无法使用 Spark Streaming 读取连续数据 Spark中如何实现呢 这是预期的行为 为了基于文件的源 https spar
  • 如何检索每个轴上的 3D 旋转角度?

    我有一个 Model3DGroup 它使用应用于对象的 Transform 属性的 AxisAngleRotation3D 围绕任何 x y z 轴旋转 问题是我无法控制网格上应用的各种旋转 我需要在每个渲染循环的 x y z 轴上显示网格
  • 在chrome新版本上使用window.open显示base64 pdf数据

    我正在使用以下代码在新窗口中以 pdf 形式打开 Base64 数据 var pdf response data base64 var doc document createElement a doc href data applicati
  • Scala 中单例对象的解释

    我得到的编码是 您基本上提供了一个 object SomeClass 和一个 class SomeClass 并且伴随类是类声明 而对象是单例 http en wikipedia org wiki Singleton pattern 您无法