问题标签 [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 回答
47 浏览

scala - 你如何在dotty中使用通配符?

这是一个允许迭代案例类字段的示例,并可能演示_了 Scala 中通配符 ( ) 的多种用法之一,但在 Dotty 中不编译:

似乎它们的使用可能仍然悬而未决,但目前有没有办法做到这一点(例如大约 dotty 0.6)?

0 投票
3 回答
326 浏览

scala - Lambda 的 Scala 隐式转换

我试图从链接中了解隐式函数类型 - http://www.scala-lang.org/blog/2016/12/07/implicit-function-types.html以下是示例代码作为示例。在下面的代码中,我们首先创建一个类 Transaction。

接下来我定义了两个方法 f1 和 f2 如下所示

然后定义一个方法来调用函数

下面的 lambda 用于调用代码

我的问题是,如果我更改val trans: Transaction = new Transactionimplicit val thisTransaction = new Transaction并更改op(trans)op它不起作用。

我无法理解为什么即使 Transaction 类型的 thisTransaction 存在于它没有被使用的范围内?

0 投票
1 回答
539 浏览

scala - Dotty 提供什么来替换类型投影?

我一直在阅读 Dotty,因为它看起来即将成为 scala 3,并注意到类型投影被认为是“不健全的”并从语言中删除......

这看起来很糟糕,因为我已经看到了几个真正有用的用例。例如:

如何在 Dotty 中做这样的事情?添加第二个类型参数到Manager? 但是,除了它使创建和操作 的实例变得非常乏味之外Manager,它也不太有效,因为没有办法强制这两种类型之间的关系(Manager[FooContainer, Bar]不应该是合法的)。

然后,还有其他用途,如 lambda 类型和部分应用类型,它们对于创建有偏函子等很有用……或者这些(部分应用类型)是否成为 Dotty 中的“一等公民”?

编辑

为了回答评论中的问题,这里有一个他可以使用的有点做作的例子。假设,我Managers实际上是 Akka Actors

0 投票
1 回答
890 浏览

scala - 如何在 Scala 中完全避免运行时反射?

请注意,这是一个社区帖子,应根据需要添加示例。如果您无法直接编辑答案以添加示例(问题示例或解决方案),请在评论中发布带有指向要点(或类似内容)的链接或添加单独的答案,以便稍后集成。

Scala 3 有可能根本不包括在内scala.reflect.runtime(Dotty 目前不包括,并且计划这样做也不确定)。虽然适用于 Scala 2 和 Dotty 的答案可能更适合用于过渡目的和立即提高性能,但也欢迎特定于 Dotty 的解决方案。

参考

https://www.cakesolutions.net/teamblogs/ways-to-pattern-match-generic-types-in-scala

0 投票
1 回答
1748 浏览

scala - 使用 Intellij IDE 运行 Scala Dotty 项目

我使用 Dotty 模板创建了一个基本的 Scala Dotty 项目并将该项目导入 IntelliJ IDE。

当我使用sbt命令行时一切正常。

当我尝试在 IntelliJ IDE 中构建或运行它时,出现以下错误:

任何想法如何解决这个问题?

0 投票
6 回答
9372 浏览

scala - 到底什么是多蒂?

我正在阅读有关Scala 3并发现dotty的信息。我试图了解它是什么。在某处我读到“它是新的编译器”,在某处我读到“它是 Scala 3 的一部分”,在某处我读到“Dotty 是新的 Scala 3”。

有人可以向我解释一下 dotty 到底是什么吗?用外行和技术术语?

PS:我已经在 StackOverflow 上阅读了的标签信息,但并没有真正理解。

0 投票
1 回答
124 浏览

scala - dotty seq 映射到联合

我无法使用最新的dotty(0.9.0-RC1)编译以下代码,乍一看它看起来应该......

有没有人知道它为什么会失败以及它是否可以工作?

0 投票
1 回答
703 浏览

scala - 如何从 Visual Studio Code UI 执行 dotty 代码

我正在尝试使用Visual Studio Code运行 dotty 代码。sbt launchIDE我根据this page的说明开始使用IDE ,并且还安装了Dotty Language Server扩展Code Runner程序。Dotty 是使用安装的brew,我可以从 CMD 编译和执行 dotty 代码。

问题是我无法从中运行此代码,Visual Studio Code因为我Code Runner试图使用 scala 而不是 dotty 来执行它。

找不到任何有用的配置来调整此插件以使用 dotty。

有什么方法可以让它在 Visual Studio Code UI 中运行?

0 投票
1 回答
177 浏览

scala - 如何在 scala 中实现类型安全的域存储库?

我想实现通用和类型安全的域存储库。说我有

结果我想要以下api:

问题是如何实现这一目标?

所以,我只看到一种使其类型安全的方法。这是对任何类型进行模式匹配,例如

但是如果我在这里有 10000 种类型呢?那将是一团糟!

我现在还不清楚的另一种方法是使用 dotty type | (或)如下:

所以你怎么看?有可能吗?

我见过的最简单的方法是

但这种方式允许做很多错误

0 投票
1 回答
408 浏览

scala - 如何在 dotty 中使用缩小的 String 类型的元组大小写头部编写匹配类型模式?

我目前正在尝试了解 Scala 3/dotty 中的新功能。所以我想重做一些我以前用 shapeless 尝试过的东西。"a" :: "c" :: "f" :: HNil给定一个缩小字符串类型的异构列表(在我理解的无​​形中,它会是无形的,并且可以使用元组("a", "c", "f")),我想根据一些映射替换类型。例如考虑以下伪代码:

为此,我想出了以下代码。重新映射单个缩小的 String 类型正在工作。但我也无法让它与元组一起使用:

我得到的编译错误Type argument s does not conform to upper bound String在以下行:

我使用了 dotty 版本0.18.1-RC1,因为它是 Scastie 上最新可用的版本。这是您可以尝试的链接:https ://scastie.scala-lang.org/BKzhEV7PRiKyfQ3CE2vjww

这不支持吗,有没有办法实现这一点,即如何进一步限制匹配类型中的类型模式(我试过case (s <: String) *: rest =>,但编译器失败并出现错误:)scala.MatchError: Parens(Ident(s)) (of class dotty.tools.dotc.ast.untpd$Parens)?还有更好的方法来实现我总体上尝试做的事情(在 dotty 的当前能力范围内,比如erasedand inline)?