加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 如何在SettingKey或TaskKey上调用.value?

发布时间:2020-12-16 09:58:06 所属栏目:安全 来源:网络整理
导读:人们可以写出类似的东西 (managedClasspath in Compile).value 在Compile配置中获取managedClasspath的值. (编译中的managedClasspath)的类型再次是sbt.TaskKey(因为我们使用ConfigKey调用in方法). 但是在SettingKey或TaskKey上没有值方法,我找不到任何提供
人们可以写出类似的东西

(managedClasspath in Compile).value

在Compile配置中获取managedClasspath的值.

(编译中的managedClasspath)的类型再次是sbt.TaskKey(因为我们使用ConfigKey调用in方法).

但是在SettingKey或TaskKey上没有值方法,我找不到任何提供这种方法的隐式类.那怎么会存在呢?这是一个神奇的宏伏都教吗?

解决方法

这两个,工作组件有一些东西:

>在sbt中,任何* XYZKey [_]都可以通过隐式转换为适当的Initialize [_]实例.默认情况下,这是一个初始化程序,它读取键上的现有值并返回它.
> sbt.std.MacroValue [T]类型是一个仅限编译时的类,它包含可以在其上调用.value的内容:http://www.scala-sbt.org/0.13.5/api/index.html#sbt.std.MacroValue.我们使用它来跟踪宏中的基础实例并表示它们具有特殊意义(即我们必须重新编写代码,以便在使用之前等待值存在).
> sbt.Def对象有一组名为macroValueXYZ的隐含,它将Initialize [_]实例提升到宏API中.

所以,正如你所看到的,通过我们的内部实现它是一种黑魔法.我们必须研究一种在scaladoc工具中更好地记录API的方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读