gpt4 book ai didi

scala - Scala 中的类型安全原语

转载 作者:行者123 更新时间:2023-12-04 07:59:35 26 4
gpt4 key购买 nike

我希望在我的 Scala 代码中有类型安全的原语“子类”,而没有装箱的性能损失(对于非常低延迟的应用程序)。例如,这样的事情:

class Timestamp extends Long
class ProductId extends Long

def process(timestamp: Timestamp, productId: ProductId) {
...
}

val timestamp = 1: Timestamp // should not box
val productId = 1: ProductId // should not box

process(timestamp, productId) // should compile
process(productId, timestamp) // should NOT compile

有一个 thread on the Scala User mailing list last year这似乎得出结论,没有拳击就不可能,但我想知道现在在 Scala 2.8 中这是否可能。

最佳答案

为什么不使用类型别名呢?我很欣赏它们并不完美(即它们不能解决您的编译问题),但是它们可以使您的代码更清晰而不会降低性能?

type Timestamp = Long
type ProductId = Long

然后,您可以编写使用 pimp my library 模式的方法,并让 JVM 使用转义分析来消除运行时开销:
class RichTimestamp(self: Timestamp) {
//whatever you want here
}

请注意,所有通常的警告都适用:除非您非常确定(例如,因为您正在执行超低延迟编程),否则使用盒装类型的性能影响可能不是问题。我每天处理处理数千万条输入的系统,没有任何问题!

关于scala - Scala 中的类型安全原语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4240223/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com