问题标签 [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.
scala - ClassTags 是如何在 Scala 中可用的?
和
需要有一个可用的隐式 ClassTag[T]。这些是如何提供的?是否有 ClassTags 的列表?我看到一个implicit val c: ClassTag[Any]
不会削减它,因为 ClassTag 是不变的。以及如何为自定义类提供 ClassTags?例如,在
ClassTag[A] 来自哪里?此代码无需我定义即可编译。
在 Predef 和源代码中的反射包中搜索隐式并没有帮助我。
scala - 将案例类传递给函数参数
抱歉问了一个简单的问题。我想将案例类传递给函数参数,并且我想在函数内部进一步使用它。到目前为止,我已经尝试过TypeTag
,ClassTag
但由于某种原因,我无法正确使用它,或者可能是我没有看正确的地方。
用例与此类似:
它将被称为这样的东西:
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”并传递一个实际的案例类,一切正常。
scala - 在 trait 中读取类型参数的 ClassType
假设我有一个特征 Foo,类型参数为 T,并且我需要在 Foo 中使用 T 的 ClassTag:
我想在不在每个 Foo 实现中实现 ct 的情况下实现这一点。例如,我想避免每次都这样做:
此外,接收实现构造函数中隐式的 TypeTag 不是一种选择,因为我使用 Guice 进行依赖注入,它无法处理构造函数中的隐式类型标记参数。所以这样的事情不是一个选择:
理想情况下,我想要这样的东西:
但是上面的代码在运行时最终会出现 StackOverflowError ,因为它会递归地调用自身。
scala - Scala:参数的类型注释将 ClassTag 重置为 Option 并破坏类型匹配
我有一个带有类型参数的特征。在这个特征中,我想定义一个方法来检查对象是否与类型参数匹配。到目前为止,这行得通,因为我希望它可以工作:
当MyTrait
-objects 是类的参数时会出现问题,如下所示:
因此,基本上参数的类型注释Seq[MyTrait[_]]
将我的 ClassTag 变成了一般的 Object 并破坏了类型匹配。我真的很想避免hasType
在从 trait 继承的每个对象中编写方法。
scala - 类型从隐式类中删除
我有一个隐式类来为案例类添加某个函数,例如:
我很高兴看到输出是
但现在我尝试通过将隐式类的参数更改为seq:Option[S]
:
不幸的是,我收到了错误消息:
为了表达p.copy(name = p.name.toUpperCase())
,它说
我认为这可能是类型擦除问题,但我不知道如何解决它。
scala - 证明 runtimeClass 满足 Scala 中的 Bound 类型
我有一个方法,它以 Parquet 形式编写我的一个类Foo
,它被定义为 Thrift。
这很好用,但我更愿意编写一个更通用的方法。我尝试了(相对)简单的:
但失败并出现以下错误:
为了解决这个问题,我使用了 a ClassTag
,但还没有编译。
这失败了:ParquetThriftOutputFormat.setThriftClass(job, tag.runtimeClass)
我很惊讶编译器(Scala 2.11)没有认识到tag.runtimeClass
必须是 a classOf[A]
,并且A
满足定义绑定的类型。
scala - 像“C:ClassTag:Manifest”这样的泛型类型是什么意思?
我发现了一些片段如下:
泛型类型的含义是C: ClassTag : Manifest
什么?
java - Scala - 如何将通用列表转换为数组并避免“没有可用于 T 的 ClassTag”
我正在研究应该是一段微不足道的代码。我想获取一个列表,并将其转换为等效的数组:
运行此代码给出:
我怎样才能避免这个问题;我来自 Python 背景,因此希望能有一个回复让我了解这里的机制。
谢谢!
scala - 如何使用参数化类作为键来操作地图
我正在尝试定义一个以参数化类为键的映射。但是当我尝试添加它时,我得到一个编译器错误:
我收到以下编译器错误:
将我的课程提取为密钥的正确方法是什么?如果我使用具体的类,它编译得很好,例如: