问题标签 [value-class]

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 回答
233 浏览

scala - 匹配 Akka 中的值类

我创建了Value Class

反对match该类:scala

这可以正常工作,但是在Akka与上面相同的类中,在receive方法中这不起作用:

当我执行代码时,虽然我正在发送一个Featurecase正在执行的语句是case _ => println("_"),但是,如果我将代码更改为:

case b:Vector[_]被执行。

Akka 文档提到:

实例化actor props 的推荐方法在运行时使用反射来确定要调用的正确actor构造函数,并且由于技术限制,当所述构造函数采用值类的参数时,不支持该构造函数。在这些情况下,您应该解压缩参数或通过手动调用构造函数来创建道具:

但不要提及匹配Value classes

更新

感谢 YuvalItzchakov 的帮助。Actor的代码如下:

收到消息的演员:

发送消息的演员:

0 投票
1 回答
588 浏览

scala - Scala 隐式转换和具有值类的 mkNumericOps

我正在尝试将数值运算添加到我定义的名为Quantity. 我正在使用的代码如下...

我使用此代码如下...

...当我尝试编译此代码时,我收到以下错误..

以下+显式使用隐式转换的方法实现(我认为应该已经在范围内!)有效。

编译器似乎无法找到数字+运算符的隐式转换。想法?

我认为使用隐式转换和Numerictrait 为值类创建数字运算是非常标准的。我究竟做错了什么?

0 投票
1 回答
601 浏览

java - 我应该使用什么数据结构在恒定时间内从不断变化的值对到 java 中的对象进行查找?

我有一个带有两个双精度数(x 和 y)的值类(位置)。我还有一个类船,它有一个带有位置对象的属性。

我需要能够进行如下查找:以恒定的时间在 (5,7) 处发货。我还希望能够更改位置对象的值,因为多艘船可以引用相同的位置对象,并且当该位置对象更改时它们都必须一起移动。

我已经查看了 hashmap,但是为了能够在 new Position(5,7) 处发货,我需要覆盖位置对象的哈希码(以便具有相同值的位置具有相同的哈希),我听说你不应更改哈希列表中对象的哈希码。

0 投票
1 回答
245 浏览

scala - 创建 Anyval 选项的又一次尝试

我正在尝试实现一个不会为包装器消耗额外内存的选项。我创建一个类。Null 代表 None,非 null 值代表 Some。

但是当我尝试运行它时,我得到了一个 NPE:

尝试创建 Maybe.none

开始初始化无

1

2

初始化

在 com.MaybeTest$.delayedEndpoint$com$MaybeTest$1(Maybe.scala:34) 在 com.MaybeTest$delayedInit$body.apply(Maybe.scala:30) 在 scala 的线程“main”java.lang.NullPointerException 中的异常。 Function0$class.apply$mcV$sp(Function0.scala:34) at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12) at scala.App$$anonfun$main$1.apply(App. scala:76) at scala.App$$anonfun$main$1.apply(App.scala:76) at scala.collection.immutable.List.foreach(List.scala:392) at scala.collection.generic.TraversableForwarder$class .foreach(TraversableForwarder.scala:35) at scala.App$class.main(App.scala:76) at com.MaybeTest$.main(Maybe.scala:30) at com.MaybeTest.main(Maybe.scala)

如果我删除“扩展 AnyVal”,一切正常。谁能解释这种行为?

0 投票
1 回答
1031 浏览

scala - 如何使用 Mockito 模拟返回值类实例的函数?

我正在尝试模拟一个返回值类实例的方法extends AnyVal

我的课:

我要模拟的功能:

和模拟:

此代码生成以下错误:

但是,当然,如果我让它返回一个字符串,它就不再编译了......

如果我删除extends AnyVal,当然可以正常工作。

0 投票
1 回答
189 浏览

scala - 布尔值类包装器上的扩展方法

在我的代码库中,我使用标签将一些信息编码为类型。随着标签的使用t.asInstanceOf[T @@ U],我可以摆脱在包装和未包装值之间编写映射的许多麻烦。

最近我用标记类型碰壁了,因为它们破坏了我想使用的一些无形的功能,所以我正在尝试使用值类。

到目前为止,我可以使用以下方式欺骗一些带有标记类型的布尔检查:

但是,我不能简单地将AnyVal一种类型转换为我想要的另一种类型,我必须提供一些诚实的代码来实现我想要的。

我试图阅读 Slick 源代码,但我应该从哪里开始的整个想法对我来说有点模糊 - 相关信息分布在很多地方,所以我不能简单地指出几个地方来例如弄清楚如何将一个映射Rep到另一个或从包装和未包装的布尔值中提取数据并将它们组合起来。

一些 Slick 专家可以推荐一些好的起点吗?

0 投票
1 回答
75 浏览

c++ - 继承自值类还是复合它?

我有以下课程:

B 类和 C 类具有共同的 A 类参数,从 A 类继承或使用复合并将 A 对象存储在 B 和 C 类中是一种好习惯吗?

从 A 类继承时,不需要为 B 和 C 重新实现 A 函数,但每个人都说复合比继承更好!那么哪个更好呢?

编辑:假设两个条件:is-a 关系,否则,假设我将“Point”类列为提到的“A”类,并且我有一个具有纬度、经度和海拔的 gps 数据,在某些类中我想添加一些协调信息给它。不清楚gps数据是点还是有点!

0 投票
1 回答
235 浏览

scala - 值类、通用特征和实例化的必要性

value classes 的规范中,它说:

值类只能扩展通用特征,不能扩展自身。通用特征是扩展的特征Any,只有defs 作为成员,并且不进行初始化。通用特征允许对值类的方法进行基本继承,但它们会产生分配的开销。例如

第一个问题

现在,我认为这意味着以下(可能)不需要实例化:

我对么?

第二个问题

而且我认为这是否需要实例化是有机会的:

在概率的平衡上,我也认为不需要实例化——我正确吗?

编辑

我没有考虑print()示例中的确切实现:

假设我使用了以下内容:

这些会导致实例化吗?

0 投票
5 回答
2868 浏览

java - 基于值的类混淆

我正在寻求对基于 Value-based Classes 的定义的一些澄清。我无法想象,最后一个要点 (6) 应该如何与第一个要点一起工作

  • (1) 它们是最终的和不可变的(尽管可能包含对可变对象的引用
  • (6) 它们在相等时可以自由替换,这意味着在任何计算或方法调用中交换根据 equals() 相等的任何两个实例 x 和 y 应该不会产生明显的行为变化。

Optional是这样的一类。

我是不是读错了,还是需要更精确?

更新

Eran 的答案是有道理的(他们不再平等),但让我移动目标:

让我们定义一个有趣的方法m,它会做一些突变并再次撤消它:

这是一种奇怪的方法,我知道。但我想,它符合“任何计算或方法调用”的条件,不是吗?

0 投票
0 回答
439 浏览

scala - Scala trait 扩展 AnyVal 的目的?

有时我在 Scala/Scala.js 中看到trait Foo extends AnyVal { ... }——这里的意义和目的是extends AnyVal什么?

我知道value classes,并且它们不能扩展扩展的特征AnyRef,因此 usingextends AnyVal对于该用例是有意义的。

但是如果我们不使用值类来扩展这样的特征呢?AnyVal特征自行扩展是否有任何性能优势?