我可以在 Scala 中定义“方法私有”字段吗?

2024-01-03

鉴于这种情况:

object ResourceManager {

  private var inited = false

  def init(config: Config) {
    if (inited)
      throw new IllegalStateException
    // do initialization
    inited = true
  }

}

有什么办法可以让我inited以某种方式“私有于 init()”,这样我就可以确定这个类中没有其他方法能够设置inited = false?


取自在 Scala 中,如何在函数内声明静态数据? https://stackoverflow.com/questions/1516087/in-scala-how-would-you-declare-static-data-inside-a-function/1516196#1516196。不要使用方法,而使用函数对象:

val init = { // or lazy val
  var inited = false

  (config: Config) => {
      if (inited)
          throw new IllegalStateException

      inited = true
  }
}

在外部作用域初始化期间(如果val)或首次访问(lazy val),执行变量的主体。因此,inited被设定为false。最后一个表达式是一个匿名函数,然后被分配给init。每进一步访问init然后将执行这个匿名函数。

请注意,它不会表现出exactly就像一种方法。 IE。不带参数调用它是完全有效的。然后它的行为就像一个带有下划线的方法method _,这意味着它只会返回匿名函数而不会抱怨。

如果出于某种原因,您实际上需要方法行为,您可以将其设为private val _init = ...并从公共调用它def init(config: Config) = _init(config).

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

我可以在 Scala 中定义“方法私有”字段吗? 的相关文章

  • 'val' 或 'var',可变还是不可变?

    我可以定义一个变量 通过var 是不可变的 var x scala collection immutable Set aaaaaa bbbbbb println x isInstanceOf scala collection immutab
  • 演员邮箱溢出。斯卡拉

    我目前正在与 scala 的两位演员合作 一 producer 产生一些数据并将其发送到parcer 生产者发送一个HashMap String HashMap Object List Int 通过消息 以及this标记发件人 parcer
  • 如何使用 Scala 在 Spark 中漂亮地打印 JSON 数据帧?

    我有一个数据帧 我想将其作为有效的 json 写入 json 文件 我当前的代码如下所示 val df DataFrame myFun df toJSON saveAsTextFile myFile json 输出的格式为 如何将文件内容组
  • 解析嵌套括号内包含的值

    我只是在开玩笑 奇怪地发现在简单的递归函数中解析嵌套括号有点棘手 例如 如果程序的目的是查找用户详细信息 它可能来自 name surname age to Bob Builder age 然后到Bob Builder 20 这是一个用于在
  • 选项包装值是一个好的模式吗?

    我最近写了以下 Scala 代码 val f File pretend this file came from somewhere val foo toFoo io Source fromFile f mkString 我真的不喜欢这种方式
  • 用于真实 Web 项目的 Scala-JS [已关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 有人用过吗Scala JS在真实的网络项目中 但不仅仅适用于普通的JavaScript在隔离环境中替换 我想尽可能多地使用 Scala 我希望可
  • Ruby 对象打印为指针

    我正在尝试创建一个类 它有一个带有单个参数的构造函数 当我创建该对象的新实例时 它返回一个指针 class Adder def initialize my num my num my num end end y Adder new 12 p
  • 什么是 Java 8“视图”?

    我正在观看 Paul Philips 的演讲 http www youtube com watch v TS1lpKBMkgg http www youtube com watch v TS1lpKBMkgg 在 12 48 比较 Scal
  • 如何设计具有相互依赖的测试的 Specs2 数据库测试?

    有没有一些首选的方法来设计Specs2 http etorreborre github com specs2 测试 有很多测试取决于之前测试的结果 下面 您将找到我当前的测试套件 我不喜欢var位于测试片段之间 不过 它们是 需要的 因为某
  • Scala 中奇怪的类型不匹配

    我希望这个问题还没有在其他地方得到解答 在这里没有找到答案 在我的本地化系统中 我有一个名为 Language 的类 class Language val name String dict HashMap String String def
  • 用惯用的 Scala 更新大型数据结构

    我已经尝试 Scala 一段时间了 并且经常遇到支持不可变数据结构的建议 但是当你有一个像这样的数据结构时3D 场景图 大型神经网络或任何具有大量需要频繁更新的对象的东西 对场景中的对象进行动画处理 训练神经网络 这似乎是 运行时效率极低
  • ';'预期但发现“导入” - Scala 和 Spark

    我正在尝试使用 Spark 和 Scala 来编译一个独立的应用程序 我不知道为什么会收到此错误 topicModel scala 2 expected but import found error import org apache sp
  • IntelliJ IDEA 13:新的 Scala SBT 项目尚未生成 src 目录结构

    我按照 Jetbrains 网站上的入门视频设置 IntelliJ IDEA 13 1 Community Edition 以与 Scala 配合使用 Scala 插件 v0 36 431 已安装 当我使用向导创建一个新的 Scala SB
  • 在 C++/CLI 中创建时初始化静态字典

    今天我看到创建静态字典并初始化它的 C 代码 public static readonly Dictionary
  • 如何将模型结果保存到文本文件?

    我正在尝试将从模型生成的频繁项集保存到文本文件中 该代码是 Spark ML 库中 FPGrowth 示例的示例 Using saveAsTextFile直接在模型上写入 RDD 位置而不是实际值 import org apache spa
  • 为什么 Scala 中的隐式类必须驻留在另一个特征/类/对象中?

    基于scala文档 http docs scala lang org overviews core implicit classes html http docs scala lang org overviews core implicit
  • Scala:如何将可变参数指定为类型?

    代替 def foo configuration String String 我希望能够写 type Configuration String String def foo configuration Configuration 主要用例是
  • 具有两个通用参数的上下文边界

    在 Scala 中 我可以使用上下文边界 def sort T Ordered t Seq T 与以下意思相同 def sort T t Seq T implicit def Ordered T 如果我有一个带有两个泛型参数的类怎么办 IE
  • 从 HList 获取元素

    我尝试了 HList 并按预期进行了以下工作 val hl 1 foo HNil val i Int hl 0 val s String hl 1 但是 我无法让以下代码正常工作 让我们暂时假设对列表进行随机访问是一个聪明的主意 class
  • 规范化且不可变的数据模型

    Haskell如何解决 规范化不可变数据结构 问题 例如 让我们考虑一个表示前女友 男友的数据结构 data Man Man name String exes Woman data Woman Woman name String exes

随机推荐

  • Java使用String.format进行十进制格式化?

    我需要将十进制值格式化为字符串 其中我始终显示至少 2 位小数 最多 4 位小数 例如 34 49596 would be 34 4959 49 3 would be 49 30 可以使用 String format 命令来完成此操作吗 或
  • 如何在 yocto 中打补丁?

    我正在尝试使用 yocto poky warrior 和 meta tegra Warriors l4t r32 2 层为 jetson nano 构建图像 我一直在关注这个线程 https stackoverflow com questi
  • T4 vs CodeDom vs Oslo [已关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 连接集合返回函数 (SRF) 并访问 SQLAlchemy 中的列

    假设我有一个activity表和一个subscription桌子 每个活动都有一个对其他对象的通用引用的数组 每个订阅都有一个对同一集中的其他对象的通用引用 CREATE TABLE activity id serial primary k
  • 检查特定的exe文件是否正在运行

    我想知道如何检查特定位置的程序是否正在运行 例如 test exe 有两个位置 c loc1 test exe 和 c loc2 test exe 我只想知道 c loc1 test exe 是否正在运行 而不是 test exe 的所有实
  • 如何动态改变datagrid行的背景颜色?

    似乎有各种黑客可以改变数据网格行的背景颜色 但所有这些似乎都发生在渲染时 See 在 Adob e Flex 中设置数据网格行的背景颜色 https stackoverflow com questions 748213 setting ba
  • Sql:将行转变成列

    考虑下面的例子 我有一个Person包含人员记录和人物属性包含链接到人员的可选属性的表 表 人 ID Name 1 Joe Bloggs 2 Jane Doe 表人员属性 PersonId Key Value 1 Age 27 2 Hair
  • 是 C++ 语句“delete [] Q;”的 Big-O O(1) 还是 O(n)?

    标题是不言自明的 很简单的问题 我认为这是 O n 但想在明天的期末考试之前验证一下 简短的回答是 这取决于情况 If Q是一个指向具有析构函数的对象数组的指针 那么delete Q将需要调用所有这些析构函数 这将调用 O n 析构函数 其
  • X86 原子 RMW 指令是否空闲等待

    在 x86 上 原子 RMW 指令如lock add dword rdi 1在现代 CPU 上使用高速缓存锁定来实现 因此 高速缓存行在指令执行期间被锁定 这是通过在读取值时获取行 EXCLUSIVE MODIFIED 状态来完成的 并且
  • 如何对连续行进行分组?

    所以 我有一个包含如下行的表 Ev Message Ev Comment EV Custom1 Ev Time Ms Machine 1 Alarm 5 23 2016 11 02 00 AM Alarms Scanned 25 Machi
  • 对屏幕阅读器隐藏图标的适当方法是什么

    在我的网络应用程序中 我为自己制作了一种仅由图标组成的字体 我使用这些图标来补充应用程序中的标题和子标题 并使其在视觉上更具吸引力 然而 像 JAWS 这样的屏幕阅读器会读出这些内容 这会给屏幕阅读器的用户带来不愉快的体验 例如角色c显示云
  • 从 SimpleXMLElement 对象获取值

    我有这样的事情 url http ws geonames org findNearbyPostalCodes country pl placename url rawurlencode city i xml simplexml load f
  • “图表”和“渲染器”同时使用时,HighCharts 性能会急剧下降

    我试图对 HighCharts 的性能有一些感受 比较这两个代码 A 1000 个矩形Renderer object http jsfiddle net highcharts jxpSk 3 50ms B 1000 个矩形Renderer
  • 设置 Eclipse 插件的启动级别和自动启动:p2.inf 与产品定义

    我知道我可以使用 p2 inf 文件或产品定义文件在 Eclipse 中设置捆绑包的启动级别和自动启动标志 在产品文件中执行此操作可以为我提供工具支持 并将设置放入我的启动配置中 另一方面 使用 p2 inf 文件允许我根据每个功能管理启动
  • 如何在 SwiftUI 中没有 NavigationButton 的情况下导航到 NavigationView 中的另一个视图?

    正如问题所说 我想在没有 NavigationButton 的情况下导航到另一个视图 例如 UIkit 中的 pushView 和 popView 我认为这更像是一种限制的解决方法 但它对我有用 添加一个布尔状态变量 用于定义链接是否处于活
  • 使用 find 和 grep 删除文件列表

    我想删除名称包含特定单词的所有文件 例如 车 到目前为止 我想出了这个 find grep car 如何将输出传递给 rm find name car exec rm f 或将管道的输出传递给xargs find grep car xarg
  • 错误:无法访问 jarfile bfg.jar - BFG

    所以我在之前的提交中错误地提交了 Secrets yml 哎呀 我想清除它的 git 提交历史记录 看来最简单的禁食方法就是使用BFG 我已经下载了 jar 文件并安装了 Java 并且我已经创建了我的存储库的镜像 但是当我按照文档运行命令
  • 在分区表上同时创建索引

    我正在使用 postgresql 14 1 并且我使用某些表的分区重新创建了实时数据库 因为我这样做了 所以我可以在服务器不活动时创建索引 但是当它活动时我只能创建使用concurrently但不幸的是 当我尝试同时创建索引时 出现错误 运
  • perl 遍历目录

    我正在尝试获取指定路径中所有目录的名称 我尝试了以下操作 但这给了我每个级别 而不仅仅是在我指定的路径上 find dir names C mydata sub dir names print File Find dir n if f Fi
  • 我可以在 Scala 中定义“方法私有”字段吗?

    鉴于这种情况 object ResourceManager private var inited false def init config Config if inited throw new IllegalStateException