首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Scala中的shapeless有哪些重要特性,它们有什么作用?

Scala中的shapeless有哪些重要特性,它们有什么作用?
EN

Stack Overflow用户
提问于 2014-01-01 07:05:24
回答 1查看 915关注 0票数 17

我正在尝试学习shapeless (2.0.0)。这似乎是一个令人惊叹的工具,我对此感到非常兴奋,但我在前进中遇到了问题。因为还没有太多的文档,所以我一直在研究示例和源代码。我遇到了困难,因为大多数示例使用了多个无形状的概念,并且在源代码中,一个无形状的类型通常会利用其他类型,所以可以说,我最终陷入了无形状的兔子洞。我认为列出shapeless的重要特性以及每个特性的简单描述会很有帮助。因为我显然没有资格列出这样的列表,所以我在问你,Stack Overflow的人类!

对于每个功能,请尽可能多地包含以下内容:

  1. 功能的名称和导入方法。
  2. 对功能的简短描述。
  3. 此功能为什么重要/为什么有人会费心使用它?
  4. 一个简单的示例,它使用尽可能少的其他无形状或高级Scala概念。

通过API的一个特性,我指的是由shapeless 2.0定义的单个事物(例如,类型、函数、对象等),或一小部分紧密耦合的事物,可以导入并在程序中使用。我指的不是一般的概念,如高阶多态性或类型级递归。并且请在每个答案中只包含一个功能。也许如果有足够的答案和足够多的其他人也使用这个列表,我们可以使用答案上的投票来对不同功能的重要性进行排名。

注意:我知道this feature list。我认为这很棒,它对我帮助很大。然而,我正在寻找更类似于API文档的东西,而不是您可以做的事情的列表。我可以理解许多例子,并从中推断出一些功能的用途,但我经常会在某些特定的部分被绊倒,无法弄清楚其功能。

EN

回答 1

Stack Overflow用户

发布于 2014-01-02 09:39:39

HList

HList是一种类似列表的数据结构,可以容纳多种类型的对象。HList实际上是一种特性。给定的HList将具有更具体的类型,该类型完全指定其内容的类型。HLists是不可变的。导入HList功能的通常方法是通过

代码语言:javascript
复制
import shapeless._

当您需要一个不是元组的异构对象的不可变集合时,HLists非常有用。

HLists是使用HNil (空HList )和::运算符构造的。以下示例说明如何创建计入“猫”的HList:

代码语言:javascript
复制
val hl = 1 :: 2 :: "cat" :: HNil

上面的hl类型包括两个Int类型和一个String类型。Shapeless在HLists上包含了许多有用的操作,这应该是其他答案的主题。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20864046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档