问题标签 [classtag]

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 回答
86 浏览

scala - ClassTags 是如何在 Scala 中可用的?

需要有一个可用的隐式 ClassTag[T]。这些是如何提供的?是否有 ClassTags 的列表?我看到一个implicit val c: ClassTag[Any]不会削减它,因为 ClassTag 是不变的。以及如何为自定义类提供 ClassTags?例如,在

ClassTag[A] 来自哪里?此代码无需我定义即可编译。

在 Predef 和源代码中的反射包中搜索隐式并没有帮助我。

0 投票
2 回答
3800 浏览

scala - 将案例类传递给函数参数

抱歉问了一个简单的问题。我想将案例类传递给函数参数,并且我想在函数内部进一步使用它。到目前为止,我已经尝试过TypeTagClassTag但由于某种原因,我无法正确使用它,或者可能是我没有看正确的地方。

用例与此类似:

它将被称为这样的东西:

0 投票
1 回答
826 浏览

scala - 将具有任何案例类返回类型的函数作为参数传递

这可能是一个愚蠢的问题,但我已经挣扎了很长一段时间。它确实类似于这个问题,但我无法在我的代码中应用它(模式或作为一个函数)。

我想将 flatMap(或 map)转换函数传递给函数参数,然后将其代理到实际调用 df.rdd.flatMap 方法的策略函数。我会尽力解释!

实体类:

实体可能对其方法有不同的策略。实体策略如下:

以及一个示例 EntityStrategy 实现:

最后,我想创建一个 flatMap/map 函数并像这样调用它:

当然,这是行不通的。我收到关于 SparkEntityStrategy 的错误:

错误:(95, 35) T val rdd = this.getData.rdd.map(f = mapFunction) 没有可用的 ClassTag

我曾尝试(implicit encoder: Encoder: T)在实体和策略方法中添加一个,但这是不行的。可能做错了什么,因为我是 Scala 的新手。

如果我删除“T”并传递一个实际的案例类,一切正常。

0 投票
1 回答
43 浏览

scala - 在 trait 中读取类型参数的 ClassType

假设我有一个特征 Foo,类型参数为 T,并且我需要在 Foo 中使用 T 的 ClassTag:

我想在不在每个 Foo 实现中实现 ct 的情况下实现这一点。例如,我想避免每次都这样做:

此外,接收实现构造函数中隐式的 TypeTag 不是一种选择,因为我使用 Guice 进行依赖注入,它无法处理构造函数中的隐式类型标记参数。所以这样的事情不是一个选择:


理想情况下,我想要这样的东西:

但是上面的代码在运行时最终会出现 StackOverflowError ,因为它会递归地调用自身。

0 投票
1 回答
65 浏览

scala - Scala:参数的类型注释将 ClassTag 重置为 Option 并破坏类型匹配

我有一个带有类型参数的特征。在这个特征中,我想定义一个方法来检查对象是否与类型参数匹配。到目前为止,这行得通,因为我希望它可以工作:

MyTrait-objects 是类的参数时会出现问题,如下所示:

因此,基本上参数的类型注释Seq[MyTrait[_]]将我的 ClassTag 变成了一般的 Object 并破坏了类型匹配。我真的很想避免hasType在从 trait 继承的每个对象中编写方法。

0 投票
3 回答
72 浏览

scala - 类型从隐式类中删除

我有一个隐式类来为案例类添加某个函数,例如:

我很高兴看到输出是

但现在我尝试通过将隐式类的参数更改为seq:Option[S]

不幸的是,我收到了错误消息:

为了表达p.copy(name = p.name.toUpperCase()),它说

我认为这可能是类型擦除问题,但我不知道如何解决它。

0 投票
1 回答
121 浏览

scala - 证明 runtimeClass 满足 Scala 中的 Bound 类型

我有一个方法,它以 Parquet 形式编写我的一个类Foo,它被定义为 Thrift。

这很好用,但我更愿意编写一个更通用的方法。我尝试了(相对)简单的:

但失败并出现以下错误:

为了解决这个问题,我使用了 a ClassTag,但还没有编译。

这失败了:ParquetThriftOutputFormat.setThriftClass(job, tag.runtimeClass)

我很惊讶编译器(Scala 2.11)没有认识到tag.runtimeClass必须是 a classOf[A],并且A满足定义绑定的类型。

0 投票
1 回答
41 浏览

scala - 像“C:ClassTag:Manifest”这样的泛型类型是什么意思?

我发现了一些片段如下:

泛型类型的含义是C: ClassTag : Manifest什么?

0 投票
1 回答
385 浏览

java - Scala - 如何将通用列表转换为数组并避免“没有可用于 T 的 ClassTag”

我正在研究应该是一段微不足道的代码。我想获取一个列表,并将其转换为等效的数组:

运行此代码给出:

我怎样才能避免这个问题;我来自 Python 背景,因此希望能有一个回复让我了解这里的机制。

谢谢!

0 投票
1 回答
56 浏览

scala - 如何使用参数化类作为键来操作地图

我正在尝试定义一个以参数化类为键的映射。但是当我尝试添加它时,我得到一个编译器错误:

我收到以下编译器错误:

将我的课程提取为密钥的正确方法是什么?如果我使用具体的类,它编译得很好,例如: