问题标签 [scala-3]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - sbt 对依赖项和编译器使用不同的 scalaVersion (Dotty nightly)
我想针对最新的 Dotty 0.28 nightly builds 测试一个项目,同时它需要最近为 Dotty 0.27.0-RC1 发布的许多依赖项。在不讨论二进制兼容性的问题的情况下,是否存在——出于测试目的,看看 Dotty 中的修复是否适用于之前崩溃 dotc 的项目——一种为所使用的编译器指定build.sbt
不同 scala 版本的方法(我想要 0.28. 0-...-NIGHTLY)和依赖项查找(我想要 0.27.0-RC1)?
我不希望编辑所有内容libraryDependencies
以更改% "foo"
for % "foo_0.27.0-RC1"
,但想要一种全局方式来启用此行为。
scala - Scala 3 中还存在 volatile 类型吗?
我找不到与 Scala 3 等效的 SLS。我正试图慢慢让自己进入 Scala 3 的思维模式并编写新代码——并在下次更改时重构旧代码——以便将其转换为 Scala 3 很简单。当前某些类型投影的用例是避免 volatile 类成员的(非常)间接结果。
scala - 如何在隐式中将类型投影转换为 PDT?
这是一个惯用的 scala 2 示例:
如您所见,它已经部分转换为使用路径相关类型。但是如何为引用Mapper
的类型(例如自身)创建隐式值?理想情况下,这是一个在 Scala 2 和 Scala 3 之间具有直接等价性的解决方案。O
self.Content
O =:= self.Content
scala - Scala3/Dotty 显式空值 Scala2 互操作
我正在查看 Dotty 文档,但我对Explicit Nulls有疑问
看起来它可以与 Java 互操作性一起使用,但是 Scala 2.x 库呢?
类型是String|Null
用于返回 a 的 scala 函数String
还是假设我们不会为它们提供 null ?
scala - Scala 3 - 在一阶类型上提取包装器和 InverseMap 元组
我正在尝试创建一个函数,该函数采用更高种类的类型的元组并将函数应用于更高种类的类型中的类型。
在下面的示例中,有一个trait Get[A]
which 是我们的高级类型。还有一个 Get 的元组:(Get[String],Get[Int])
以及来自 的函数(String,Int) => Person
。
Scala-3 有一个称为 InverseMap 的 Match-Type,它将类型 (Get[String], Get[Int]) 转换为本质上的类型 (String,Int)。
因此,最终目标是编写一个函数,该函数可以接受具有任意数量Get[_]
类型的元组和一个输入与 InserveMap 类型匹配的函数,最后返回 a Get[_]
,其中包装的类型是函数的结果。
我试图创建一个genericF
下面调用的函数来显示所需的行为,尽管它可能不正确——但我认为它至少显示了正确的意图。
我在这里设置了一个 Scastie:https ://scastie.scala-lang.org/OleTraveler/QIyNHPLHQIKPv0lgsYbujA/23
scala - 如何确保元组是同质的?
由于我无法控制的原因,我的方法以元组的形式接收输入。这个元组应该只包含 的实例Foo
,即它应该看起来像(Foo, Foo ... Foo)
并且不应该有String
orInt
在里面。我想在编译时检查这一点,而不是在运行时抛出异常。我怎样才能做到这一点?
以下是我目前拥有的代码,这是不正确的:
我愿意使用 Shapeless 或 Dotty/Scala 3 中引入的新功能。
scala - 如何让匹配类型在 Scala 3 中正常工作
我很好奇是否可以移植我的无类型项目以使用 Scala 3 进行类型化。这是我的开始:
它不编译,它抛出一个错误:
我认为这是因为它没有将模式匹配视为 s 的“类型过滤器”,因为它认为在这种情况下 s 具有 type "tag" | "attrs" | "children"
,而模式匹配情况应该将其减少为“标记” .
如何实现我请求的行为?
scala - 如何向函数提取摘要添加类型检查
我正在发现 Dotty,我很想提出我的算法的类型化版本。我想实现以下我可以在 JavaScript 中轻松完成的任务。它基本上是一种提取记录或数组属性的浓缩方式:
我有一堆函数,比如我想输入的 Field。这是我到目前为止所尝试的。记录或对象被建模为结构类型{ def get(k: Key): KeyMapper[Key] }
,如果输入的类型是静态已知的,则基本上尝试静态获取字段的类型,如在这个问题中。这是我第一次成功的尝试,下面是剩下的和失败的。
到目前为止一切顺利,它编译时没有类型错误。现在,我希望将类型定义整合为记录Key
的KeyMapper
一部分,这样我就只有两个类型参数,而不是四个,并且代码更易于维护。我尝试了以下方法:
我收到以下错误::
好的,到目前为止,除了使用 进行转换之外,我没有看到任何其他方法key
,.asInstanceOf[record.Key]
然后我收到以下错误:
好的,我有点失望,但我在A#KeyMapper[A#Key]
. 然后我得到错误:
嗯,所以我读了一点,发现类型投影已被弃用并从 Dotty 中删除,所以我需要一个具体的值。这是我的下一次尝试:
我得到错误
此时,我不明白如何解决此错误消息,因为我希望 get 方法具有取决于输入类型的返回类型。有什么线索吗?
scala - Scala 3 / Dotty 中的依赖元组
我正在尝试使用依赖元组列表对依赖映射进行编码。这是我所拥有的不起作用的:
我得到的只是
我想不出一种模式匹配的好方法,d.second
以便它的类型取决于 d.first。我可以添加.asInstanceOf[Array[String]]
,.asInstanceOf[String]
但这不是这里的目标,我正在尝试对代码进行类型检查。