scala – 如何通过q??uasiquotes或deconstructors匹配`universe#
发布时间:2020-12-16 09:50:06 所属栏目:安全 来源:网络整理
导读:我有一个类型resultType的Context.this.type#c#universe #Type.我需要将它与单元类型匹配.我试过了 resultType match { case q"Unit" = ...} 但我想这里的Unit只是一个字符串文字,显然不匹配.如何通过q??uasiqotes匹配类型? 我也尝试过 resultType match {
我有一个类型resultType的Context.this.type#c#universe #Type.我需要将它与单元类型匹配.我试过了
resultType match { case q"Unit" => ... } 但我想这里的Unit只是一个字符串文字,显然不匹配.如何通过q??uasiqotes匹配类型? 我也尝试过 resultType match { case TypeRef(ThisType(_),Symbol("scala.Unit"),_) => ... } 但有一个错误: [error] pattern type is incompatible with expected type; [error] found : Symbol [error] required: Context.this.c.universe.SymbolContextApi 如何以这种方式匹配类型? 解决方法
Quasiquotes在这种情况下不起作用的主要原因是你不能在树上匹配而是匹配Type.这两个是反射API的单独概念,它们并不完全相同.
检查类型是否与您期望的类型相同的简单方法是使用typeOf并键入equality运算符=:=: case tpe if tpe =:= typeOf[Unit] => 当然,这不是唯一的方法.也可以通过TypeRef进行匹配,并检查其中的符号是否相等,如其他答案所示. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- AngularJS $interval函数在路由更改后继续
- angularjs – Angular UI-Router多个视图
- WebService大讲堂之Axis2(7):将Spring的装配Jav
- Scala:在使用空值取消应用元组时出现奇怪的Matc
- angularjs是否作为$scope.null处理null?
- angularjs – Angular promise在函数内解析但不在
- HDU 5775 Bubble Sort [树状数组]【数据结构】
- AngularJS ng-repeat数组,每个项目具有唯一的$sc
- Bootstrap基本样式学习笔记之标签(5)
- Vim:自动突出显示所选单词的所有出现
热点阅读