是否可以将 TypeTag 转换为 Manifest?

2023-11-24

我们的库使用 TypeTags,但现在我们需要与另一个需要清单的库进行交互。有没有简单的方法可以从 TypeTag 创建清单?


如果你天真地尝试召唤一个Manifest when a TypeTag存在,编译器会给你一个解决方案的提示:

import reflect.runtime.universe._
import reflect.ClassTag

def test[A : TypeTag] = manifest[A]

error: to create a manifest here, it is necessary to interoperate with the type
tag `evidence$1` in scope.
however typetag -> manifest conversion requires a class tag for the corresponding
type to be present.
to proceed add a class tag to the type `A` (e.g. by introducing a context bound)
and recompile.
   def test[A : TypeTag] = manifest[A]
                                   ^

所以如果你有一个ClassTag在范围内,编译器将能够创建必要的Manifest。您有两个选择:

  • 添加第二个上下文绑定到任何地方TypeTag是,如:

    def test[A : TypeTag : ClassTag] = manifest[A] // this compiles
    
  • 或者先转换TypeTag to a ClassTag,然后要求Manifest:

    def test[A](implicit ev: TypeTag[A]) = {
      // typeTag to classTag
      implicit val cl = ClassTag[A]( ev.mirror.runtimeClass( ev.tpe ) )
    
      // with an implicit classTag in scope, you can get a manifest
      manifest[A]
    }
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以将 TypeTag 转换为 Manifest? 的相关文章

随机推荐

  • CSS 在 Chrome 中不起作用

    我正在处理的网站的此页面未加载 CSS http www thesanfordcenter net sanford center 它只发生在 Chrome 中 但不是缓存问题 因为同样的问题也发生在另一台计算机上的 Chrome 中 并且我
  • 将隐式 ExecutionContext 传递给包含的对象/调用的方法

    我正在使用 Scala 2 10 futures 创建一个异步库 库的构造函数采用一系列实现特定特征的用户定义对象 然后库类上的方法将一些数据逐一发送到用户定义的对象中 我希望用户提供ExecutionContext用于设置主实例时的异步操
  • LINQ/Lambda 相当于 SQL

    我有一个 IEnumerable 其中包含带有 id 的对象列表 我想选择那些 ID 为 1 2 7 8 9 10 和 11 的对象 我不知道等效 SQL 语句的 LINQ Lambda 等效项 select where id in 1 2
  • 从 WebView 启动自定义 Android 应用程序

    我有一个 HTML 文件 如果我在 Android 本机浏览器中打开它 它就会启动一个应用程序 但是当我尝试在 WebView 中打开相同的应用程序时 它无法启动该应用程序 并且显示 网页不可用 我认为我的 WebView 无法处理为应用程
  • JSF、RichFaces、分页

    我知道这里有很多关于 JSF 分页的帖子 但没有一个让我满意 为了将相当大的数据分割成页面 我将使用 RichFaces 数据滚动器组件 它似乎适合于此 但看起来它是 人工 分页的 我不喜欢这里的是它加载所有数据 然后只显示其中的一部分 至
  • 动态解析逻辑运算 - AND、OR、循环条件

    我有一个传入记录过滤器 存储有逻辑子句 如下所示 Acct1 Y AND Acct2 N AND Acct3 N AND Acct4 N AND Acct5 N AND Acct6 N OR Acct7 N AND Acct1 Y AND
  • f() 和 (f()) 之间有什么区别吗?

    之间有任何区别 var myfunc function return function and var myfunc function return function 这只是风格问题还是第一种形式中的 周围还有更多内容 没有 或者至少在你的
  • 透明背景与 Three.js

    代码有效 但我在使用 Three js 设置画布透明背景时遇到问题 我用 Background renderer setClearColor 0xffffff 0 但随后背景变黑 如何将其更改为透明 代码 var camera scene
  • 如何使用 argparse 创建“对列表”类型的参数?

    我需要让 python 脚本的最终用户输入如下内容 script py sizes lt 2 2 gt lt 3 3 gt lt 6 6 gt 其中的每个元素 sizes选项是一对两个正整数 我怎样才能做到这一点argparse 定义自定义
  • 如何配置 Squirrel SQL 客户端以与 MS Access 一起使用

    我正在努力让 Squirrel SQL 连接到 MS Access 数据库 只是一个普通的数据库 没有密码 我创建一个别名并使用驱动程序 JBDC ODBC 桥 此驱动程序前面有一个勾 我不知道在网址中输入什么 我使用 数据库文件路径 gt
  • 使 GWT 应用程序可由搜索引擎抓取

    我想使用 使我的 GWT 应用程序可爬网的令牌 如下所述 http code google com web ajaxcrawling 在线有一个使用此功能的 GWT 示例应用程序 例如 http gwt google com samples
  • 连接 std::variant 和 std::variant 的类型

    有没有办法从两个现有变体类型声明第三个变体 其中包含两个变体类型的并集 include
  • UIDocument 和 NSFileWrapper 架构和性能

    我们最近将代码转换为使用 UIDocument 而不是直接操作文件系统上的文件 因此我们遇到了一些性能问题 我们想知道我们是否错误地使用了这个类 是否有其他人遇到这些问题 以及解决这些问题的常见方法是什么 Our app 我们有一个 鞋盒应
  • LINQ实际上编译成什么?

    背景 其背景是我最近在评论中与另一位显然知识渊博的用户就 LINQ 的编译方式进行了对话 我先 总结 一下 说LINQ被编译成for循环 虽然这是不正确的 但我对其他堆栈的理解 例如this one是 LINQ 查询被编译为内部有循环的 l
  • Backbone js,更新模型更改视图

    为什么我的视图没有更新
  • 为什么当类被密封时,带有 AutoMoqCustomization 的 Autofixture 不再抱怨缺少无参数构造函数?

    当我使用Moq直接模拟IBuilderFactory并实例化BuilderService我自己在单元测试中 我可以获得通过测试 验证Create 的方法IBuilderFactory被调用一次 但是 当我使用自动夹具 with AutoMo
  • 如何在文本上使用 TinyMCE 函数而不实际选择该文本?

    我有各种 div 我的页面上有 s 单击后会转换为 TinyMCE 编辑器部分 因此 用户只需双击 div 然后使用 TinyMCE 编辑其中的文本即可 我的问题是 是否可以在 div 没有实际选择里面的文本 我的意思是 我想实现以下用例
  • 在 jpa 中调用序列的下一个值

    我有一个映射为实体的类 以将其保存在数据库中 我有一个 id 字段作为主键 因此每次保留对象时 都会从序列 myClass pk seq 中检索 id 的值 代码如下所示 Entity Table name myObjects public
  • 从另一个项目修改 Windows 窗体控件

    我有一个控制lblDate在用户控制中MainScreen 我想在类的方法中修改它Date 这是在另一个项目中AoWLibrary 我无法引用它 因为 AoWLibrary 是第一个项目的依赖项 我尝试将 lblDate 设为静态 但编译器
  • 是否可以将 TypeTag 转换为 Manifest?

    我们的库使用 TypeTags 但现在我们需要与另一个需要清单的库进行交互 有没有简单的方法可以从 TypeTag 创建清单 如果你天真地尝试召唤一个Manifest when a TypeTag存在 编译器会给你一个解决方案的提示 imp