问题标签 [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.
scala - Scala 值类的惯用方法
有谁知道是否有一种惯用的方式来命名 Scala 值类的内部值?假设我有一个产品 ID 的值类,是否更好地定义为:
?
这只是偏好问题还是有惯用的指导方针?
scala - 在值类上使用私有构造函数是否会否定值类的好处?
我正在考虑制作一个值类,它对如何实例化有一定的警惕性。例如,假设我想要一个非负整数:
我唯一担心的是私有构造函数可能使 scala 编译器无法将NonNegInt
视为原始int
。这是真的?
scala - 具有值类参数的 Mockito 存根方法因 NullPointerException 而失败
使用类型化的值类作为 ID 是 Scala 中的一种常见模式。但是,在对将值类作为参数的方法进行存根时,Mockito 似乎存在问题。在下面的示例中,具有实际值的第一个存根可以正常工作,但是使用参数匹配器的第二个存根会抛出 NullPointerException。
我发现的唯一参考是这个问题,但那里显示的解决方案不起作用。任何人都知道解决方案或解决方法?
版本是:org.mockito:mockito-all:1.10.19和org.specs2:specs2_2.11:2.4.15
[信息] Mockito 应该
[info] + 带有参数值的正确存根
[信息]!使用参数匹配器正确存根
[错误] NullPointerException:(MockitoIDStubTest.scala:20)
[错误] MockitoIDStubTest$$anonfun$1$$anonfun$apply$5$$anonfun$apply$6.apply(MockitoIDStubTest.scala:20)
scala - 为什么这个几乎相同的值类不起作用?
正如http://docs.scala-lang.org/overviews/core/value-classes.html所承诺的,这有效:
但这不会编译:
为什么不?我唯一改变的是方法的名称!
这是错误消息:
是的,我已经仔细检查了whyNot
.
scala - 使用 Scala 值类定义新的数值类型
当我第一次听说价值类时,我想——终于!现在我可以在没有对象分配的情况下定义我自己的数字类型!但结果比我想象的要难。
我想定义我自己的 Decimal 类型Dec64
(http://dec64.com/)或 long-backed decimal 以进行快速货币计算。但是,AnyVal
s 不能扩展Numeric
,因为Numeric
它不是通用特征。我试图跟进 Scala 代码Double
,但它非常复杂,有AnyValCompanion
很多FractionalProxy
标记private[scala]
代码,还有非常有用的注释,例如不应该在用户代码中扩展。
那么,如何正确定义自己的数值类型,以便与其他 Scala 数字一起使用呢?
scala - 当需要实例化 Scala 值类时,有没有办法获得警告?
在有关Scala value classes的文档中,提到了需要为 value class 实际分配实例的三种情况:
分配摘要
值类实际上在以下情况下被实例化:
- 值类被视为另一种类型。
- 一个值类被分配给一个数组。
- 进行运行时类型测试,例如模式匹配。
当需要实例化值类时,编译器或语言功能中是否存在会产生警告的设置?
scala - 值类中的验证
SIP-15 意味着可以使用值类来定义例如新的数字类,例如正数。是否可以编写这样一个约束,即在没有构造函数的情况下底层> 0,而不必调用单独的方法来验证约束(即;创建此类的有效实例很简洁)?
如果值类具有构造函数的概念,那么可以有如下验证的地方,但不支持(即,下面的代码将无法编译)
r - 为什么转置函数将R中的数字更改为字符?
我在 Excel 中构建了一个简单的矩阵,其中包含一些字符值和一些数值(在 Excel 中设置的数据截图)。我使用 openxlsx 包将其读入 R,如下所示:
之后我检查课程:
这正是我想要的。当我尝试转置矩阵时出现我的问题,然后再次检查类:
当我现在检查 sapply 时,所有值都是“字符”。为什么转置时没有保留类?
scala - Scala:值类与案例类
我试图发现在给定场景中使用值类或案例类之间的区别。假设我想将整数 mod 5 建模为唯一数据类型。问题是我应该从哪一个开始...
无论如何,我似乎可以Numeric
相当容易地创建一个实现。那么,使用案例类方法,我可以简单地做到这一点:
但是,对于值类,这似乎是一项更加困难的尝试,主要是因为这样做的好处是避免了对象创建。因此,像
似乎在很大程度上违背了目的。(实际上不确定它是否有效。)
问题是可以Numeric
与值类一起使用,还是我必须硬着头皮使用案例类?
scala - Scala 禁止分配值类
根据有关值类的文档,它们可以在多种情况下分配:
分配摘要
值类被视为另一种类型。
一个值类被分配给一个数组。
进行运行时类型测试,例如模式匹配。
无论如何,如果出现这些情况,是否会抛出编译错误?