当他们说" 盒装数字类型"时,scala docs for Any@##
的含义是什么? †
文档的引用是(突出我的):
等同于
x.hashCode
除盒装数字类型和null。 对于数字,它会返回...
Boxed[Int]
吗?在阅读Synthetic Function “##” in scala
后出现了这个问题 † 我认为value type is a subtype of scala.AnyVal
并没有作为对象实现,因此没有装箱
答案 0 :(得分:2)
SELECT DISTINCT
T0.DocNum, T0.Status, T1.ItemCode, T2.ItemName,
T1.PlannedQty, T0.PlannedQty AS 'Net Quantity'
FROM
OWOR T0
INNER JOIN
WOR1 T1 ON T0.DocEntry = T1.DocEntry
INNER JOIN
OITM T2 ON T0.ItemCode = T2.ItemCode
WHERE
T0.Status = 'L' AND
T1.ItemCode IN ('BYP/RM/001', 'BYP/RM/002', 'BYP/RM/003', 'BYP/RM/004','BILLET') AND
T2.ItmsGrpCod = 111 AND
(T0.PostDate BETWEEN (SELECT Dateadd(month, Datediff(month, 0, {?EndDate}), 0)) AND {?EndDate})
方法是为hashCode
(或java.lang.Object
)定义的,但对于原始("未装箱")类型没有等效方法。当您在基元上调用scala.AnyRef
时,您将拥有盒装类型的哈希码,例如
hashCode
此处3.0自动装箱到3.0.hashCode // 1074266112
,从而提供java.lang.Double
方法。
Scala添加hashCode
以允许正确比较基元,例如
##
这是因为3 == 3.0 // true
与此处的哈希码不同:
##
对于参考值,3.0.## // 3 !
的行为与##
相同:
hashCode