gpt4 book ai didi

scala - 有人可以向我解释一下 Shapeless 库的用途吗?

转载 作者:行者123 更新时间:2023-12-03 05:25:37 24 4
gpt4 key购买 nike

有人可以简单地向我解释一下 Shapeless 库的用途吗?

Scala 具有泛型和继承功能,所以我有点困惑 Shapeless 的用途。

也许一个用例来澄清事情会有所帮助。

最佳答案

这有点难以解释,因为 Shapeless 具有广泛的特征;我可能会发现“用简单的术语解释变量的用途”更容易。您肯定想从 feature overview 开始.

从广义上讲,Shapeless 是关于使用类型进行编程。在编译时执行通常在运行时执行的操作,精确跟踪列表中每个元素的类型,能够从元组转换为 HList 到案例类,创建多态函数(而不是方法),等等

典型的使用场景如下:

  • 从某处读取一堆值到 List
  • 执行类型安全转换 List进入HList
  • map HList具有多态函数,例如标准化值
  • 将第三个元素(静态已知为 Int )转换为以 0 填充的字符串
  • 使用 HList 中的值构造案例类

仅供引用, HList 将具有精确的类型,例如 Int :: String :: Boolean :: HNil (是的,这确实单一类型)其中所有内容都被固定并且大小是固定的。因此,您要么需要在编译时确切地知道 HList 中将包含什么内容,要么需要类型安全的强制转换。

如果您选择tail这样一个 HList,你会得到 String :: Boolean :: HNil ,并且编译时保证其头部将是 String 。在头部前面添加一个值同样会保留所有涉及的类型。

Shapeless 还附带 Generic 类型类,允许您对元组和案例类使用 HList 操作。

我倾向于使用的其他功能是:

  • Coproducts ,它允许您静态键入一个值,例如“StringDoubleInt ,但没有其他”(很像 Either ,但不限于两种可能性)

  • Lenses ,这简化了嵌套案例类的使用。

关于scala - 有人可以向我解释一下 Shapeless 库的用途吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21739190/

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