斯卡拉 – 无形窄型损失
发布时间:2020-12-16 18:09:08 所属栏目:安全 来源:网络整理
导读:在以下示例中 import shapeless._import shapeless.syntax.singleton._val concat = "right".narrowdef extract[s : String](x: s)(implicit witness: Witness.Aux[s]): String = witness.valueextract(concat) 我收到了一个错误 Error: could not find impl
在以下示例中
import shapeless._ import shapeless.syntax.singleton._ val concat = "right".narrow def extract[s <: String](x: s)(implicit witness: Witness.Aux[s]): String = witness.value extract(concat) 我收到了一个错误
我正在尝试做的事情是类型级DSL,它严重依赖单例类型. 由于在typelevel的fork之外支持单例类型的文字,我希望除了类型文字之外还要开发基于值的DSL,并且在值类型中保留可用的单例类型对于此任务至关重要. 编辑 使用.witness而不是.narrow的操作完美地工作,但我仍然在寻找没有Witness包装的纯类型的解决方案 解决方法
这是类型推断的失败……你会发现,
extract[concat.type](concat) 将按预期工作. 这并不是特别有用,因为我想你想要从值参数中提取单例类型来提取. shapeless提供了对Witness类型的隐式转换,因此以下内容可能适用于您的上下文, def extract(witness: Witness.Lt[String]): String = witness.value 这将接受文字字符串和缩小值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- shell awk
- angularjs – Internet Explorer 8上的Angular JS ui-route
- 《数据结构》课程设计题目
- 如何衡量我的AngularJS应用程序的摘要周期的性能?
- 如何使用socks5代理生成docker-compose pull images?
- bootstrap源码学习之消息提示alert(一)
- Scala,Casbah – 如何将List转换为MongoDBList?
- springcloud ConfigServer的工作原理
- twitter-bootstrap – 我应该包括bootstrap.css和bootstrap
- 单元测试 – 如何让content_shell运行我的测试?