问题标签 [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.

0 投票
1 回答
139 浏览

scala - 如何使隐式可用于内部功能

我想在包装函数中定义隐式值并使其可用于内部函数,到目前为止,我设法通过从包装器传递隐式变量来做到这一点:

是否可以避免implicit b: B =>implicit val b: B = B()提供给内部功能块?

0 投票
1 回答
134 浏览

scala - 使用 doc 命令编译和运行 dotty 代码

我克隆了dotty并将其添加到我的PATH(我是Linux用户)之后,我使用dotty创建了HelloWorld项目并尝试使用dotcdotr命令编译和运行它,如下所示:

我收到了这个错误:

有什么建议么 ?

0 投票
1 回答
182 浏览

scala - 新的 dotty 运行时完全死在我身上

周六早上在这里。尝试学习新的 Scala 编译器 dotty。

使用安装在我的 Mac 上

安装成功。我有版本

创建的目录

把这段代码写在Hello.scala

我能够编译它

.class有一堆.tasty文件

接下来我做了

现在我得到了一个错误的大规模“爆炸”,dotr 运行时完全死亡并退出。

我做了什么导致这次爆炸?这不是一个友好的错误消息。

0 投票
2 回答
389 浏览

scala - Dotty 无法推断具有抽象类型的类型参数特征的通用 Scala 函数的结果类型

一个简单的价值层次

想象一下这个简单的特征Value,其中每个实现类都有value某种类型T

我们有两个不同的实现类分别表示IntString值。

键入安全的值选择

如果我们有一个List值,我们希望有一种类型安全的方式来选择特定类型的所有值。类Values及其伴随对象帮助我们做到这一点:

所有这些在 Scala 2.13 和 Dotty 0.20.0-RC1 中都可以正常工作,因此有一个混合值列表……</p>

…我们可以选择元素并将它们作为正确的类型返回——所有这些都在编译时检查:

在 Dotty 中选择一个值Option[T]失败

但是,如果我们添加这个函数来选择值作为它们的T类型(即IntString)并将其作为Option…</p>

…然后在 Scala 2.13 中一切正常:

但在 Dotty 0.20.0-RC1 中,这不能编译:

我们可以通过添加一个类型参数来解决这个问题,getValueInnerOption它将返回类型和抽象类型T联系在一起,并允许我们指定返回类型。

不幸的是,这意味着我们将不得不在调用站点添加T(ie Intor String) 的实际类型,这很遗憾,因为它只是样板文件。

Dotty 中的错误或该怎么办?

似乎 Dotty 已经知道上限T是什么,但无法将该知识传播到函数的结果类型。String如果尝试从 an请求 a 可以看出这一点IntValue

那么原始代码(没有类型参数U)是否可以在最终的 Scala 3.0 中工作,还是需要以不同的方式编写?

0 投票
3 回答
374 浏览

scala - 如何在 Dotty 中使用给定?

我正在查看页面Dotty下的文档Contextual Abstractions,我看到了Given Instances.

给定的实例(或者简单地说,“给定的”)定义了某些类型的“规范”值,这些值用于综合给定子句的参数。例子:

但是文档中的这个示例从未解释过如何使用given. 我拉了测试Dotty示例项目并尝试使用它,但我不太了解它。

它是一个新的关键字吗?我们进口它吗?还是我错过了什么。

0 投票
1 回答
446 浏览

scala - 如何在dotty中解包元组中的元素类型?

假设我有一个类定义为:

我想编写一个通用方法,将 tuple 解压缩为type(Box[A1](a1), .., Box[An](an))的 tuple 。(a1, .., an)(A1, .., An)

我试过Match Types没有运气:

0 投票
3 回答
208 浏览

scala - 如何将两个元组与兼容的类型结合起来?

假设我有两个元组,第一个是类型为值的元组(V1, V2, .., Vn)

第二个是类型为函数的元组(V1 => V1, V2 => V2, .., Vn => Vn)

现在我想将这两个元组(f1(v1), v2(v2), .., fn(vn))与 type结合起来(V1, V2, .., Vn)

我不知道如何在scala 3.0(即dotty)中得到这个。

编辑:我查看了 shapeless 的源代码并得到了一个(部分工作)解决方案:

我不知道为什么apply方法的返回会丢失它的类型。

0 投票
1 回答
76 浏览

scala - DOT 演算中的列表编码

我正在阅读依赖对象类型的本质,发现列表的以下编码:

在此处输入图像描述

为什么要写:

特别是,为什么我们给A型底部?类型不应该像 cons 中那样是多态的吗?

0 投票
1 回答
1133 浏览

scala - 给定关键字在 Scala 3 或 dotty 中如何工作?

我正在浏览 Scala 3 文档。他们引入了given关键字,它被认为是 Scala 2 的替代品implicit。代码在这里

我在这里很困惑,下面的代码中发生了什么:

Ord[T]它是在given关键字还是其他东西中实例化?

0 投票
1 回答
131 浏览

scala - 基本的新 dotty 项目说明因“无效的私钥”而失败,如何解决?

Dotty的入门页面提供了启动新项目的说明:

创建一个 Dotty 项目:

当我运行这个时,我得到这个错误:

看来我对 GitHub 的身份验证可能失败了。一些谷歌搜索让我得到了这个答案,说这是由于使用了更新的 OpenSSHid_rsa密钥。

所以我创建了一个新的 SSH 密钥~/.ssh/id_rsa.nonopenssh,将其添加到我的 SSH 代理,并将其添加到我的 GitHub 帐户,但我仍然收到错误消息。我该如何解决?