问题标签 [scala]

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 投票
3 回答
5896 浏览

scala - 基于代理/参与者的并发设计的设计模式

最近我一直在研究支持演员/代理/无共享架构的替代语言 - 即。scala、clojure 等(clojure 也支持共享状态)。

到目前为止,我阅读的大多数文档都集中在介绍级别。我正在寻找的是四个更高级的文档,但没有共享任何基础。

为什么 ?它有助于理解设计思维的变化。简单的示例很简单,但在现实世界的 Java 应用程序(单线程)中,您可以拥有具有 1000 个具有复杂关系的成员的对象图。但是随着基于代理的并发开发,它引入了一套全新的想法,以便在设计大型系统时理解。IE。代理粒度 - 一个代理应该管理多少状态 - 对性能等的影响,或者是将共享状态对象图映射到基于代理的系统的良好模式。将域模型映射到设计的技巧。讨论不是关于技术,而是更多关于如何在设计中最好地使用技术(现实世界的“复杂”示例会很棒)。

0 投票
3 回答
2787 浏览

scala - 在 Scala 中解包元组类型

我只是想知道,我可以在 Scala 中将元组类型分解为其组件的类型吗?

我的意思是,像这样

0 投票
2 回答
4823 浏览

scala - Scala:使用子列表的谓词拆分列表

我刚刚有一个用例,我需要将一个列表拆分为 n 个子列表,以便从原始列表中按顺序获取元素并分组,而子列表的谓词为真(当它为假时,启动一个新的子列表) . 我在标准库中没有找到这个功能,我认为尝试以功能样式解决它是一个很好的练习(因为我离功能大师还很远)。

下面是我想出的代码。但我怀疑它可以改进很多。你能帮我找到更好的编码方法吗?

样品的结果是:

0 投票
1 回答
1688 浏览

scala - Scala 的“规范”BDD 框架如何工作?

我刚刚开始使用 Scala,我想知道哪种语言功能允许您这样做:

这是来自Kestrel 的单元测试

这里发生了什么?是否"PersistentQueue" should意味着 Scala 字符串类已经使用“应该”方法进行了扩展,或者这里发生了其他事情?我快速浏览了 Scala 文档,但看不到此代码示例使用了哪些语言功能。

0 投票
3 回答
2518 浏览

scala - Scala 中的类型参数与成员类型

我想知道成员类型在 Scala 中是如何工作的,以及我应该如何关联类型。

一种方法是使关联类型成为类型参数。这种方法的优点是我可以规定类型的变化,并且我可以确定子类型不会改变类型。缺点是,我无法从函数中的类型推断类型参数。

第二种方法是使关联类型成为第二种类型的成员,它的问题是我无法对子类型的关联类型规定界限,因此,我不能在函数参数中使用该类型(当 x : X, X#T 可能与 xT 没有任何关系)

一个具体的例子是:

我有一个 DFA 的特征(可能没有 type 参数)

我想创建一个在输入序列上运行这个 DFA 的函数,我想要

  • 该函数必须将任何内容<% Seq[alphabet-type-of-the-dfa]作为输入序列类型
  • 函数调用者不需要指定类型参数,都必须推断
  • 我希望使用具体的 DFA 类型调用该函数(但如果有一个解决方案,该函数没有 DFA 的类型参数,那没关系)
  • 字母表类型必须不受约束(即,必须有一个用于 Char 以及未知用户定义类的 DFA)
  • 具有不同字母类型的 DFA 不是子类型

我试过这个:

这行得通,除了这里没有推断出类型 S,所以我必须在每个调用站点上编写整个类型参数列表。

这不起作用(对类型 D 的无效循环引用???(它是什么?))

我还删除了类型参数,创建了一个抽象类型 Sigma 并尝试在具体类中绑定该类型。runDFA 看起来像

但这不可避免地会遇到诸如“类型不匹配:预期dfa.Sigma,得到D#Sigma”之类的问题

有任何想法吗?指针?

编辑:

由于答案表明没有简单的方法可以做到这一点,有人可以详细说明为什么这是不可能的以及必须改变什么才能奏效吗?

我希望 runDFA ro 成为一个自由函数(而不是方法)的原因是我想要其他类似的函数,如自动机最小化、常规语言操作、NFA 到 DFA 转换、语言分解等,并将所有这些都放在一个类中几乎违反了OO设计的任何原则。

0 投票
7 回答
36566 浏览

oop - 在 Scala 中拥有伴生对象的基本原理是什么?

是否存在需要类的伴随对象(单例)的情况?为什么我要创建一个类,比如说Foo并为它创建一个伴生对象?

0 投票
5 回答
818 浏览

java - 你打算在什么项目上使用 Scala 编程语言?

您在哪里看到将 Scala 用于您的项目?

0 投票
4 回答
9384 浏览

web-services - 为什么 lift web 框架是可扩展的?

我想知道lift web框架具有高性能和可扩展性的技术原因?我知道它使用 scala,它有一个演员库,但根据安装说明,它的默认配置是使用码头。那么它是否使用演员库进行缩放?

现在是开箱即用的可扩展性。只需添加额外的服务器和节点,它就会自动扩展,是这样工作的吗?它可以处理 500000+ 与支持服务器的并发连接。

我正在尝试为企业级创建一个 Web 服务框架,它可以击败现有的东西,并且易于扩展、可配置和可维护。我对扩展的定义只是添加更多服务器,您应该能够容纳额外的负载。

谢谢

0 投票
1 回答
14690 浏览

java - Scala中变量声明中的通用通配符

在 Java 中,我可能会这样做:

...假设(MyImpl implements MyInterface)当然。

使用Scala中的类似物是Buffer什么?

这(当然)不会编译 - 但是我如何list以这样的方式声明变量呢?

编辑;我再补充一点。区别显然与以下事实有关:在 Java 中,泛型在 T 中永远不会协变,而在 Scala 中,它们可以是协变的,也可以不是协变的。例如,Scala 类List在 T 中是协变的(并且必然是不可变的)。因此以下将编译

我仍然在为编译器错误苦苦挣扎:

Covariant type T occurs in contravariant position in ...

例如; 此编译器错误发生在类声明中:

我要问一个单独的问题...

0 投票
4 回答
31815 浏览

generics - 为什么示例不编译,也就是(co-,contra-和in-)方差如何工作?

this question之后,有人可以在Scala中解释以下内容:

+T我理解类型声明中和之间的区别T(如果我使用它会编译T)。但是,如何在不诉诸于创建未参数化的事物的情况下,实际编写一个类型参数协变的?如何确保只能使用 的实例创建以下内容T

编辑-现在将其归结为以下内容:

这一切都很好,但我现在有两个类型参数,我只想要一个。我将重新提出这个问题:

如何编写一个类型协变的不可变 Slot类?

编辑2:呃!我用过var,没有val。以下是我想要的: