问题标签 [labelled-generic]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3387 浏览

scala - 从 LabelledGeneric 实例中提取标签值

考虑以下示例:

现在,类型labl是(美化的)

它已经传达了我需要的信息,即案例类字段的名称。

我正在寻找的是一种方法,可以从labl以下内容开始

即将单例类型中包含的信息具体化为一个值。

这可能吗?我可以使用宏,但我觉得我最终会重写与GenericMacros无形对象非常相似的东西,所以我想知道是否可以直接利用它。

0 投票
1 回答
850 浏览

scala - 传递一个类型参数以用作参数 LabelledGeneric

我正在尝试参数化一个需要在可以检索a 的泛型类型A上工作的方法。LabelledGeneric这是天真的方法

当然,底层宏抱怨。它对以下内容了解不够A

类型 A 不是类或特征


所以,我试图LabelledGeneric推断

这似乎有效,但类型不再Repr是已知的HList

类型参数 [lbl.Repr] 不符合方法应用的类型参数边界 [L <: shapeless.HList]


好的,让我们尝试更精确

现在,Repr绝对是一个HList,但仍然Keys无法解决它的隐含

找不到参数值的隐含值:shapeless.ops.record.Values[lbl.Repr]


最后的尝试,让我们尝试隐式计算我需要的所有内容

仍然没有运气,显然第一个隐式无法在呼叫现场解决

找不到参数 lbl 的隐式值:shapeless.LabelledGeneric.Aux[example.Main.Foo.type,Repr]

[错误] 参数(Foo)

显然,当直接处理特定类型时,所有这些机器都可以工作,例如

我显然在方法签名中缺少对我的类型进行的所需改进,但我可以了解这里发生的事情。任何想法?

0 投票
2 回答
3221 浏览

scala - 无形 - 将一个案例类变成另一个具有不同顺序的字段

我正在考虑做一些类似于在不同类型的案例类之间安全复制字段但使用重新排序的字段的事情,即

然而,我想有一些东西可以把 aA(3, 4)变成B(4, 3)- 无形的'LabelledGeneric

结果是

如何对记录中的字段(?)重新排序,以便使用最少的样板文件?

0 投票
1 回答
632 浏览

scala - 未找到 LabelledGeneric 的无形映射器

我有这样定义的基本类型池:

我想介绍一些由这个池中的类型组成的案例类,如下所示:

由于它们将在通过使用此处HList描述的方法转换为 s实现的特征生成器中大量使用,我想确保呈现类型的每个字段都是

  • Section亚型
  • HListSection亚型_
  • 记录可呈现HListSection子类型

我为这种情况定义了简单的编译时检查器:

但它失败了(删除了包名)

找不到参数映射器的隐式值: Mapper[traverseView.type,::[Header with KeyTag[Symbol with Tagged[String("header")],Header],::[ContractViewPartners with KeyTag[Symbol with Tagged[String( "partners")],ContractViewPartners],::[Tech with KeyTag[Symbol with Tagged[String("tech")],Tech],HNil]]]]

如果我从它的工作中删除partners部分ContractView并且如果我尝试解决implicits它们ContractViewPartners也会被发现。

再次在写问题时,我找到了添加.values这样的解决方案

会不会是那种类型with KeyTag[...]不能作为LabelledGeneric转换源正常工作?

0 投票
1 回答
851 浏览

scala - 将无形标签与 LabelledGenerics 一起使用

假设我想遍历这里描述的案例类泛型表示

我已经定义了一些类型类来描述字段:

定义了一些实例:

和普通用户:

所以现在我可以写了

并得到

res1: 字符串 = 点{x: 1,000,y: 2,000,z: 3,000}

现在我想使用shapeless标签定义一些字段元数据:

所以Described(invisible(0.5))现在成功生产

res2: String = 0,500[不可见]

但随着重新定义

产生编译错误:

LeftFolder.Aux[this.Out,Seq[String],DescrFolder.type,Seq[String]] 错误:以类中的方法开头的类型的发散隐式扩展 invisibleDescribed...

我认为该类型X with Tag[Y] with KeyTag[K,X]没有被识别为FieldType[S, X]但无法猜测如何修复它。

如何定义适合LeftFolder这种情况?

0 投票
0 回答
1679 浏览

shapeless - 从案例类的 LablelledGenerics 中获取字段名称和值

我尝试让 Seq[String] 包含案例类的字段名称和另一个 Seq[String] 包含案例类的值。以一般的方式。我想我必须使用 Poly1 函数映射值才能具有任意类型 => 字符串。

但现在,我无法从 LabelledGenerics 中提取键和值。

我不确定我是否必须要求隐含的键和值,或者是否可以从 LabelledGeneric 中获得。

我试图将以下 Poly 映射到键上以获得字符串的 hlist。但似乎钥匙不是见证人

我现在有点迷路了。

0 投票
1 回答
303 浏览

scala - 无形对齐与不同类型但相同的标签

有人知道如何对齐两条记录,当它们具有相同的字段名称但值不同时

我可以将两条记录与完全相同的类型对齐,并且即使类型不精确但它们需要通过键对齐,我也可以对两条记录执行 zipWith 。

谢谢

0 投票
3 回答
133 浏览

scala - 使用 Shapeless + LabelledGenerics 将一个类泛型为另一个类

我知道使用 Shapeless 我可以做这样的事情:

现在我想写一个通用的方法来做到这一点:

但是,现在的用法是笨拙的吗?

设计此 API 的更好方法是什么?

我试过这样的事情:

但它并没有真正起作用

0 投票
1 回答
190 浏览

scala - 见证类型推导问题

我想为从案例类中删除字段构建通用解决方案。使用这个技巧,我构建了这个工作代码:

我想k: WitnessHListof Witnesss 替换 single。但即使添加泛型Witness类型参数也会导致编译错误:找不到Remover.

编译器似乎无法派生Witness.T。欺骗Witness.Aux[R]没有帮助。如何克服这个问题?

0 投票
0 回答
253 浏览

r - 在 facet_grid 中使用 label_parsed 的错误表达式

似乎该label_parsed函数无法显示图形标签的表达式facet_grid(参见下图)。

在此处输入图像描述

数据文件在这里

我预计 CO2 将显示 2 的下标。当我调用该图时它没有并返回错误。

解析错误(文本 = as.character(值))::1:10:意外的数字常量 1:场景 2 ^

但是,当我从 facet_grid() ie 中删除变量“影响”或“ID”之一时facet_grid(impact~., scales = "free", space = "fixed", labeller = label_parsed),CO2 正确显示了下标。

我的代码有什么问题?谁能帮帮我?提前非常感谢。