Intellij 工作表和其中定义的类

2023-12-21

我正在学习 Coursera 的 Scala 函数式编程课程,并发现工作表 repl 出现了奇怪的行为。

在课程中,包含以下代码的工作表应在右侧给出以下结果:

object rationals {
val x = new Rational(1, 2)              > x : Rational = Rational@<hash_code>
   x.numer                              > res0: Int = 1
   y. denom                             > res1: Int = 2
}

class Rational(x: Int, y: Int) {
   def numer = x
   def denom = y
}

我得到的是

object rationals {                      > defined module rationals
val x = new Rational(1, 2)              
   x.numer                              
   y. denom                             
}

class Rational(x: Int, y: Int) {        > defined class Rational
   def numer = x
   def denom = y
}

只有在移动之后class进入object我得到了与代码中相同的结果。

  • 这是 Intellij 造成的,还是 Scala 发生了变化?
  • 还有其他方法可以解决这个问题吗?

在 IntelliJ IDEA scala 工作表中,处理objects与 Eclipse/Scala IDE 不同。

对象内部的值不会以线性序列模式进行计算,而是被视为普通的 scala 对象。在明确使用之前您几乎看不到有关它的信息。

真正看到你的vals 和表达式只是在任何对象\类之外定义或评估它们

在某些情况下,这种行为可能是救世主。假设您有这些定义。

  val primes = 2l #:: Stream.from(3, 2).map(_.toLong).filter(isPrime)

  val isPrime: Long => Boolean = 
    n => primes.takeWhile(p => p * p <= n).forall(n % _ != 0)

注意isPrime可能是一个简单的def,但我们选择将其定义为val因为某些原因。

这样的代码很好,可以在任何正常的 scala 代码中工作,但在工作表中会失败,因为vals 的定义是交叉引用的。

但是如果你将这些线包裹在某个对象中,例如

object Primes {
  val primes = 2l #:: Stream.from(3, 2).map(_.toLong).filter(isPrime)

  val isPrime: Long => Boolean =
    n => primes.takeWhile(p => p * p <= n).forall(n % _ != 0)
}

会评估没问题的

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

Intellij 工作表和其中定义的类 的相关文章

  • Scala 中的超时未来

    假设我有一个函数 它调用一个阻塞可中断的手术 我想在超时的情况下异步运行它 也就是说 我想在超时到期时中断该功能 所以我正在尝试做这样的事情 import scala util Try import scala concurrent Fut
  • 无法将 Maven 项目导入 IntelliJ IDEA

    我在将任何 Maven 项目导入 IntelliJ IDEA 时遇到问题 我创建一个空的 Maven 项目 如下所示 mvn archetype generate DgroupId com mycompany app DartifactId
  • IntelliJ IDEA 13 + Tomcat 7 部署

    我尝试在 Tomcat7 上的 IDEA 中部署空的 Web 应用程序 Tomcat 停止在线工作 INFO Deploying web application directory C devel Servers apache tomcat
  • 如何编写 sbt 插件来通过代理启动应用程序

    我想在开源之前为我的项目创建一个 sbt 插件 该项目在应用程序运行开始时附加一个 Java 代理 以对其进行各种类型的分析 代理写出文本文件以供以后处理 我希望能够编写一个 sbt 插件 有一个替代方案run called runWith
  • 在 Java 中使用 Scala 常量

    我目前正在评估 Scala 的未来项目 并发现了一些奇怪的事情 我在 JSP 中为我们创建了以下常量 val FORMATED TIME formatedTime 但这没有用 经过一番尝试后 我决定反编译以了解其真相 private fin
  • Playframework 2.0 在视图模板中定义函数

    我正在开发一个使用 PlayFramework 2 0 的项目 在阅读了一些 scala 之后 我想在视图模板中嵌入一些动态代码 所以 我做了以下事情 def getMystring sequence Int if patternForm
  • Akka/Scala:映射 Future 与 pipelineTo

    In Akka参与者 在发送一个Future结果给另一个演员 A 映射Future发挥作用tell结果给演员 B 定义一个onSuccess未来的回调 其中tell结果给演员 C 管道Future结果给演员pipeTo 其中一些选项已在上一
  • IntelliJ Play2 设置未保存

    在 IntelliJ 中 我尝试在语言和框架中保存 Play 2 编译器的以下设置 但它没有被保存 文件 设置 语言和框架 Play 2 激活 使用Play 2 确定当我随后按照上述步骤查找此设置时 它没有被激活 有谁知道为什么它没有被保存
  • Intellij Idea 需要永远解决 Maven 依赖关系

    我正在使用 intellij idea 最终版本 12 1 4 并尝试在项目中使用 Maven 这是我的 pom xml
  • sbt:编译测试时设置特定的 scalacOptions 选项

    通常我使用这组选项来编译 Scala 代码 scalacOptions Seq deprecation encoding UTF 8 feature unchecked language higherKinds language impli
  • 如何通过 Scala REPL 使用第三方库?

    我已经下载了Algebird我想尝试一些事情Scala 解释器使用这个库 我该如何实现这一目标 当然 您可以使用 scala cp 无论如何并手动管理您的依赖项 但这变得非常乏味 尤其是当您有多个依赖项时 更灵活的方法是使用sbt http
  • 在 Play 2 模板中格式化双精度的正确方法是什么

    这是我的 Play 2 模板的缩写代码 variable com mypackage Variable div class statsbody div class statsform div div
  • 从会话中读取数据时如何发出加特林捕获请求?

    根据加特林文档 http gatling io docs 2 1 7 session session api html 我可以在执行场景时使用会话属性 但是 每次我在场景中使用函数文字访问会话时 都会遇到以下异常 error java la
  • 在 scala 中保留推导的更高类型

    我有一个高阶类型 并致力于用它构建一些 DSL 我正在寻找一种方法来定义可以接受类型而无需显式指定此类型的函数 自我描述示例 class Wrap T val data T class DSL def doSomething T x Wra
  • 使用 OpenNLP 获取句子的解析树。陷入困境。

    OpenNLP 是一个关于自然语言处理的 Apache 项目 NLP 程序的目标之一是解析一个句子 并给出其语法结构的树 例如 天空是蓝色的 这句话 可能会被解析为 S NP VP The sky is blue where S是句子 NP
  • 从 IntelliJ 运行 JavaFX 应用程序

    Versions openjdk版本 11 0 11 2021 04 20 OpenJDK 运行时环境 build 11 0 11 9 Ubuntu 0ubuntu2 20 10 OpenJDK 64 位服务器虚拟机 内部版本 11 0 1
  • 用 HashMap[Int, Vector[Int]] (Scala) 表示图(邻接列表)?

    我想知道如何 如果可能的话 我可以通过以下方式制作 可变 图的邻接列表表示HashMap Int Vector Int HashMap当然是可变的 目前我将其设置为HashMap Int ArrayBuffer Int 但我可以更改 Arr
  • 无法在 Intellij 中运行主类[重复]

    这个问题在这里已经有答案了 我有以下项目结构 ProjectRoot src Main examples libs My src文件夹被标记为sources在 Intellij 中 现在 当我想运行 Main 类时 出现以下错误 Excep
  • 更新到 IntelliJ IDEA Ultimate 2016.2 后找不到 Grails 应用程序

    我已将我的 IntelliJ IDEA Ultimate 更新到 2016 2 版本 我有一个 Grails 3 项目 现在当我打开 IDE 时尝试运行我的项目时出现以下错误 Error running Grails My Project
  • 在 Spark 中将多行汇总为单行和单列

    我有一个如下的火花 DF 我需要汇总具有与单行相同 ID 的多行 但值应该不同 id values 1 hello 1 hello Sam 1 hello Tom 2 hello 2 hello Tom 预期输出 id values 1 h

随机推荐

  • DTD——ID属性的唯一性

    根据DTD规范 http www w3 org TR REC xml id关于 ID 属性类型 有效性约束 ID ID 类型的值必须与名称产生相匹配 名字不能 作为此类型的值在 XML 文档中出现多次 即 ID 值必须唯一标识承载它们的元素
  • 如何在 Windows 8 现代应用程序上从视频流中抓取帧?

    我正在尝试从 mp4 视频流中提取图像 查找完内容后 正确的方法似乎是使用 C 中的媒体基础并打开框架 从中读取内容 文档和示例很少 但经过一番挖掘后 似乎有些人已经成功地做到了这一点 通过将帧读入纹理并将该纹理的内容复制到内存可读的纹理
  • ActionMode 回调不起作用

    我正在执行一项任务 我想在文本选择上创建自定义工具提示 意味着我想在工具提示菜单中添加我自己的选项 我使用了下面的代码 它在某些设备中正常工作 如图所示 在菜单 xml中 menu menu
  • 如何在倒计时后删除 Django 对象?

    在我正在开发的平台中 我们希望用户能够为他们创建的对象设置到期时间 在他们设置的倒计时到期后 该对象应该被删除 您建议如何这样做 编辑 我应该澄清的是 每个对象的到期时间都会有所不同 执行您所描述的操作的最常见方法是创建一个列来存储创建时间
  • 为什么这个 Boost ASIO 代码不能与这个 python 客户端一起工作?

    此代码与原始 udp 异步回显服务器相同 但具有不同的套接字 响应已传输并显示在wireshark 中 但随后会向服务器发送回ICMP 端口不可达错误 我试图理解为什么 因为一切看起来都是正确的 您可以将此代码直接复制到源文件中 例如服务器
  • 如何更改 group_vars 和 host_vars 的路径?

    我们可以通过修改来改变角色的路径roles path in ansible cfg 但该文档似乎没有提及任何有关更改路径的内容group vars and host vars 我怎样才能改变这些路径 我将把与ansible相关的文件与rai
  • 在可移动和不可复制的类上使用移动和交换习惯是否有意义

    如果我有这样的课程 class Foo public Foo Foo Foo rhs operator Foo rhs swap this rhs void swap Foo rhs private Foo const Foo snip s
  • Dropbox oauth 窗口无法正常工作

    我正在将我的应用程序移植到 Electron 我惊讶地发现 Dropbox 身份验证在此环境中不起作用 不过它在 Chrome 中确实有效 登录按钮保持禁用状态 并且标签出现在输入上方 控制台中显示以下消息 Content Security
  • 尝试将应用程序提交到应用程序商店时 Xcode 崩溃[重复]

    这个问题在这里已经有答案了 我正在尝试提交一个应用程序 我将其存档 然后尝试提交它 结果崩溃了 我查找了此问题的潜在解决方案 他们说只需转到首选项 gt 帐户 gt 并更新以确保您已同意所有新条款 所以我这样做并再次尝试 现在它仍然崩溃 我
  • Ruby:一类的子类之后的[数字]的语法名称[重复]

    这个问题在这里已经有答案了 我正在通过示例学习 Ruby on Rails 我在迁移文件夹中看到这里是一个示例代码 class RemoveOrderListNumberAndStateFromOrderLists lt ActiveRec
  • 渲染许多连接的四开文档

    我一直在尝试新的quarto https quarto org Rstudio 的工具 似乎我无法做旧版本中可以做的事情R笔记本 or R Markdown备择方案 我想通过几个四开文档 qmd 组织我的工作流程 并且我想生成 html 文
  • 调用 twig 扩展时出现未知函数错误

    我正在寻找创建一个 twig 扩展 但 Symfony 一直告诉我我的功能未知 这是我的课程
  • Managed Oracle ODP.NET 驱动程序是否使用网络加密?

    我最近读到 Oracle 支持 Oracle 客户端和服务器之间的网络加密 我假设 如果服务器支持此功能 客户端就可以在各种 Oracle 数据访问提供程序库使用的完整 Oracle 客户端驱动程序中完成连接 但是 我的应用程序使用来自 O
  • 如何在 SQL Server 中存储和检索 varbinary(max) 列

    我正在开发一个应用程序 我想将用户的指纹存储到数据库中 然后将其与从设备中获取的指纹进行比较 我在转换时遇到了某些问题varbinary max 列返回一个字节 我尝试过使用GetSqlBinary功能但它给了我indexoutofrang
  • 自动选择 WPF TextBox 中焦点上的所有文本

    如何自动选择 WPF 文本框中焦点上的所有文本 乔纳森 通过向应用程序添加全局事件处理程序 您可以非常轻松地做到这一点 http madprops org blog wpf textbox selectall on focus http m
  • 如何使用 Promise 等待 observable 的每个值

    假设我有这个可观察的 const obs new Observable observer gt observer next 0 25 observer next 0 75 observer next new ArrayBuffer 100
  • 用户体验问题:“严重删除”或“垃圾”更好

    我正在开发一个应用程序 允许用户管理一些单独的数据点 我的用户想要做的事情之一是 删除 但这意味着什么 对于 Web 应用程序来说 向用户提供严重删除或使用 垃圾 系统的选项是否更好 在 严重删除 下 很想知道是否有更好的名称 您单击 删除
  • 使用空初始化器列表直接初始化

    struct X X std cout lt lt default ctor lt lt std endl int main X 这打印出来 default ctor 这是有道理的 因为空大括号值初始化了对象 我认为 然而 struct X
  • 即使视口元标记中的分辨率宽度为 1536,ipad 3 设备宽度是否始终为 768?

    我正在尝试了解 ios 设备的视口元标记 我创建了一个测试页面 在其中插入了一张 862 像素宽的图像 所以我的视口元标记为 然而在ipad 3上 分辨率宽度为1536像素 并将视口设置为与ipad 3相同的可见区域大小 862px图像被放
  • Intellij 工作表和其中定义的类

    我正在学习 Coursera 的 Scala 函数式编程课程 并发现工作表 repl 出现了奇怪的行为 在课程中 包含以下代码的工作表应在右侧给出以下结果 object rationals val x new Rational 1 2 gt