gpt4 book ai didi

scala - 有没有办法确保类型在编译时是可序列化的

转载 作者:行者123 更新时间:2023-12-04 15:19:40 28 4
gpt4 key购买 nike

我经常使用 Spark,如果编译器可以确保一个类型是可序列化的,它会为我节省很多时间。

也许使用类型类?

def foo[T: IsSerializable](t: T) = {
// do stuff requiring T to be serializable
}

仅约束 T <: Serializable 是不够的。它仍然可能在运行时失败。单元测试是一个很好的替代品,但您仍然可以忘记它们,尤其是在与大型团队合作时。

我认为如果没有密封类型,这在编译时可能是不可能的。

最佳答案

是的,这是可能的,但不是您希望的方式。您的类型类 IsSerializable可以提供一种机制来转换您的 T到一个类型的值,该值保证为 Serializable然后再回来,

trait IsSerializable[T] {
def toSerializable(t: T): String
def fromSerializable(s: String): Option[T]
}

但是,当然,这只是一种基于类型类的替代序列化机制,这使得 JVM 序列化的使用变得多余。

您最好的做法是游说 Spark 直接支持基于类型类的序列化。

关于scala - 有没有办法确保类型在编译时是可序列化的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39286251/

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