为什么可以在 REPL 中声明同名变量?

2024-01-29

scala> val hi = "Hello \"e"
hi: String = Hello "e


scala> val hi = "go"
hi: String = go

在同一个 REPL 会话中,为什么它允许我声明具有相同名称的变量 hi ?

scala> hi
res1: String = go

scala> hi="new"
<console>:8: error: reassignment to val
   hi="new"
     ^

我知道这个错误我们无法重新分配 val


REPL 的有趣设计特征是您的两个定义被翻译为:

object A {
  val greeting = "hi"
}
object B {
  val greeting = "bye"
}

后续用法将导入最后一个定义:

object C {
  import B.greeting
  val message = s"$greeting, Bob."  // your code
}

您可以通过以下方式见证确切的包装策略scala -Xprint:parser:

object $iw extends scala.AnyRef {
  def <init>() = {
    super.<init>();
    ()
  };
  import $line4.$read.$iw.$iw.greeting;
  object $iw extends scala.AnyRef {
    def <init>() = {
      super.<init>();
      ()
    };
    val message = StringContext("", ", Bob.").s(greeting)
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么可以在 REPL 中声明同名变量? 的相关文章

  • 如何在Gradle中支持多种语言(Java和Scala)的多个项目?

    我正在尝试将过时的 Ant 构建转换为 Gradle 该项目包含约50个Java子项目和10个Scala子项目 Java 项目仅包含 Java Scala 项目仅包含 Scala 每个项目都是由 Java 和 Scala 构建的 这大大减慢
  • 在 Akka 中配置嵌套 Router

    我有一些嵌套的路由器 应创建它FromConfig 我想要的是这样的 test akka actor deployment worker router round robin nr of instances 5 slave router b
  • 如何在 Apache Spark 中通过 DStream 使用特征提取

    我有通过 DStream 从 Kafka 到达的数据 我想进行特征提取以获得一些关键词 我不想等待所有数据的到达 因为它是可能永远不会结束的连续流 所以我希望以块的形式执行提取 如果准确性会受到一点影响 对我来说并不重要 到目前为止 我整理
  • Scala:如何将可变参数指定为类型?

    代替 def foo configuration String String 我希望能够写 type Configuration String String def foo configuration Configuration 主要用例是
  • Akka Stream Graph 恢复问题

    我创建了一个图表来并行化具有相同输入的两个流 这些流产生 Future Option Entity 如果 flowA 失败 我想返回 Future None 但恢复似乎没有被调用 val graph Flow Input Future Op
  • 模拟 BlazeClientBuilder[IO] 以返回模拟客户端[IO]

    我正在使用BlazeClientBuilder IO resource方法得到Client IO 现在 我想模拟客户端进行单元测试 但不知道该怎么做 有没有一个好的方法来嘲笑这个 我会怎么做 class ExternalCall val r
  • 高效序列化案例类

    对于我正在工作的图书馆 我需要提供一个高效 便捷 typesafe序列化 scala 类的方法 理想的情况是用户可以创建一个案例类 并且只要所有成员都是可序列化的 它似乎也应该如此 我准确地知道序列化和反序列化阶段的类型 因此不需要 也不能
  • 如何在映射中将字符串转换为 Seq[String]

    我有一个Map String String 以及需要的第三方功能Map String Seq String 有没有一种简单的方法来转换它 以便我可以将地图传递给函数 original mapValues Seq 注意mapValues返回地
  • 在 Scala 中将元素追加到列表末尾

    我无法添加 type 元素T到一个列表中List T 我尝试过myList myElement但它似乎创建了一个奇怪的对象并访问myList last始终返回放入列表中的第一个元素 我怎么解决这个问题 List 1 2 3 4 Result
  • IntelliJ:线程“主”java.lang.NoClassDefFoundError中的异常:org/apache/spark/sql/types/DataType

    附言 有一个类似的问题here https stackoverflow com questions 40287289 java lang noclassdeffounderror org apache spark logging 但那是在
  • 为什么自类型类可以声明类

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

    当尝试使用 Spark 和 Scala 简化单元测试时 我使用 scala test 和mockito scala 以及mockito Sugar 这只是让你做这样的事情 val sparkSessionMock mock SparkSes
  • IntelliJ IDEA 不会从 SBT 项目加载 Lift 库

    我通过创建了一个空白项目sbt使用最基本的指南 具体来说 gt cd xyz gt sbt here we create a new project w Scala 2 8 1 gt lift is org lifty lifty 1 6
  • scala 返回列表中的第一个 Some

    我有一个清单l List T1 目前我正在执行以下操作 myfun T1 gt Option T2 val x Option T2 l map myfun l flatten find gt true The myfun函数返回 None
  • Scala:类型参数中的问号

    我试图理解以下代码 来自 Scalaz 库 def kleisliIdApplicative R Applicative Kleisli Id R 我假设一种形式T P0 是一个带有参数的类型构造函数 但是我无法找到解释类型参数中问号用法的
  • 如何在 Scala 2.11 中查找封闭源文件的名称

    在编译时 如何在 scala 2 11 中检索当前源文件 编写代码的位置 的名称 这是一种实际有效的方法 val srcFile new Exception getStackTrace head getFileName println sr
  • Scala 和 Python 的通行证

    我想知道 是否有相当于 python 的 pass 表达式 这个想法是编写没有实现的方法签名 并编译它们只是为了对某些库原型的这些签名进行类型检查 我能够使用以下方法模拟这种行为 def pass A A throw new Excepti
  • Scala 中的随机列表[重复]

    这个问题在这里已经有答案了 我对 scala 中的随机播放列表有疑问 使用scala util Random 例如我有 val a cyan val b magenta val c yellow val d key val color Ra
  • 火花内存不足

    我有一个文件夹 里面有 150 G 的 txt 文件 大约 700 个文件 平均每个 200 MB 我使用 scala 来处理文件并最终计算一些汇总统计数据 我认为有两种可能的方法可以做到这一点 手动循环所有文件 对每个文件进行计算并最终合
  • Scala 的“神奇”函数列表

    在哪里可以找到 Scala 的 神奇 函数列表 例如apply unapply update etc 魔法函数是指编译器的某些语法糖使用的函数 例如 o update x y lt gt o x y 我用谷歌搜索了一些组合scala mag

随机推荐

  • istio-proxy 在 1 小时后关闭长时间运行的 TCP 连接

    TL DR 我们如何配置 istio sidecar 注入 istio proxy envoy proxy istio egressgateway 以允许长期存在 gt 3 小时 可能空闲的 TCP 连接 一些细节 我们正在尝试执行到 Po
  • 某些 Android 设备将内部存储视为 SD 卡,将外部存储视为 EXTSD

    我有很多来自不同供应商的 Android 设备 其中一些将 mnt sdcard 连接到内部存储 将 mnt extsd 连接到 外部存储 场景1 和其他将 mnt sdcard附加到外部存储 场景2 我认为第二种情况是标准的 因为 And
  • 为什么2to3将mydict.keys()更改为list(mydict.keys())?

    我正在查看 2to3 的输出 其中包含此更改 for file prefix in output keys for file prefix in list output keys where output是一本字典 这一变化有何意义 2to
  • 使用 sed 查找并除以文件中的所有数字

    我试图在 json 文件中查找所有数字 并在 mac 上使用 sed 将它们替换为原始数字的一半值 例如 这里我搜索2010并将其替换为1005 file data json sed i E s 0 9 2010 0 9 1 1005 2
  • 超过 2^32 的枚举标志

    我在我的应用程序中使用枚举标志 枚举可以有大约 50 多个值 因此值最多为 2 50 我只是想知道我可以使用Math Pow 2 variable 来计算这些 当我尝试这样做时 我得到了恒定值编译时错误 除了手动计算 2 的幂并将其代入之外
  • 如何在 .vimrc 中换行?

    我已经设置了一个colorcolumn 80 但我发现我无法在 vimrc 中换行长行 有没有类似C的方法 连接 例如我尝试过这个 但它不起作用 autocmd FileType python setlocal ai si et sta s
  • Android Market - 两次更新之间的等待时间

    我想知道我必须等待多少次才能发布我的申请更新 我想确保更新会出现在 Android 市场的 新闻 部分 你正试图玩弄市场体系 不要那样做 在需要更新时更新您的应用程序 即当您有新功能或错误修复时 根据我的经验 更新太频繁会让现有用户生气 并
  • for 带有 Twig 或 Swig 的循环计数器

    任何人都知道在 Twig Swig 中执行此操作的干净方法 for i 0 i lt 100 i blah endfor 如果你有一个数字 那么你可以将其转换为数组 然后使用 Swig 的标签标准 如果您总是想从 0 开始循环 这是最简单的
  • 增加MongoDB最大连接数

    我在 MongoDB 端遇到一些错误 错误是抱怨它达到了允许的最大连接数 想知道是否有办法增加允许的最大连接数 查看 MongoDB 文档 http www mongodb org http www mongodb org 使用此命令行参数
  • javascript、jquery时间格式

    我有一个问题 如何在 javascript 或 Jquery 中将时间从 24 小时格式更改为 12 小时 最简单的方法 这就是我所拥有的 TempDate datepicker formatDate MM dd yy TempDate v
  • HelloAndroid模拟器问题

    我是第一次尝试 android SDK 我从 HelloAndroid 教程开始 完全遵循每个步骤 但模拟器在没有我的应用程序的情况下启动 日食控制台说 2010 02 23 11 47 55 HelloAndroid 2010 02 23
  • Google 表格复选框结果作为新行

    我们在谷歌表单上有复选框 可以将其输入到谷歌表格中 对复选框的响应以逗号分隔 我们想知道是否可以有新行 这是表单填充工作表的方式 Col A Col B Name Availability Larry Monday Sergey Monda
  • 将数据库表行直接反序列化为 C# 对象 - 有这样做的机制吗?

    我是 C 新手 这可能最终是一个愚蠢的问题 但无论如何我都需要问 C 是否有一种机制可以将执行的 SQL 语句的结果反序列化为 C 对象 我有一个 C 程序 它从 SQL 服务器读取一个表 将行存储在对象中 我手动将每个列值分配给对象成员
  • 如何保持实时 MediaSource 视频流同步?

    我有一个服务器应用程序 它渲染 30 FPS 视频流 然后将其实时编码和复用为WebM 字节流 https dvcs w3 org hg html media raw file tip media source webm byte stre
  • 在页面加载时使用 AngularJS 将 json 绑定到 HTML 表

    我有一个简单的概念验证 我用它作为学习一些 AngularJS 的基础 该代码在 HTML 表中显示一些 JSON 数据 如下所示 HTML div div p Click a here a to load data p table tr
  • 在go(golang)中,如何将接口指针转换为结构指针?

    我想使用一些需要指向结构的指针的外部代码 在调用代码时 我有一个接口变量 当从该变量创建指针时 指针的类型是interface 当我需要它作为结构类型的指针类型时 图像中的代码TestCanGetStructPointer 不知道 Cat
  • Laravel 5.2 致命错误:第 66 行的vendor/composer/autoload_real.php

    我已经上传了我的 laravel 项目local to host 现在我有以下错误 Fatal error require Failed opening required home httpd vhosts mort com httpdoc
  • Android StAX 游标解析器 - 找不到方法 javax.xml.stream.XMLInputFactory.newInstance

    我在用着AsyncTask从 i net 下载并解析 XML 内容 下载和解析 xml 发生在doInBackground 方法 这 达尔维克虚拟机 遇到问题 找不到方法 这是日志LogCat 06 30 13 26 41 148 DEBU
  • 如何在 android 中使用 viewpager 创建动态选项卡?

    解释 假设我有多个来自 REST 的类别 我不知道有多少个类别 可能是 5 7 个 有时是 2 个等 我想用 viewpager 将所有类别放在我的选项卡上 我想根据类别大小创建一个选项卡 让我们看看例如假设我的 REST 响应中只有 2
  • 为什么可以在 REPL 中声明同名变量?

    scala gt val hi Hello e hi String Hello e scala gt val hi go hi String go 在同一个 REPL 会话中 为什么它允许我声明具有相同名称的变量 hi scala gt h