gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 18:06:47 26 4
gpt4 key购买 nike

一个人可以写这样的东西

(managedClasspath in Compile).value

获取 managedClasspath的值在 Compile配置。
(managedClasspath in Compile)的类型又是一个 sbt.TaskKey (因为我们用 in 调用 ConfigKey 方法)。

然而没有 value方法在 SettingKeyTaskKey ,而且我找不到任何提供这种方法的隐式类。那它怎么存在呢?这是一些神奇的宏伏都教吗?

最佳答案

两者兼而有之,工作组件中有一些东西:

  • 在 sbt 中,任何 *XYZKey[_]可以转换成合适的Initialize[_]实例通过隐式。默认情况下,这是一个初始化程序,它读取键处的现有值并返回它。
  • sbt.std.MacroValue[T] type 是一个只有编译时的类,它包含一些可以调用 .value 的东西:http://www.scala-sbt.org/0.13.5/api/index.html#sbt.std.MacroValue .我们使用它来跟踪宏中的底层实例并表示它们具有特殊意义(即我们必须重新编写代码,以便在使用之前等待该值存在)。
  • sbt.Def对象有一组称为 macroValueXYZ 的隐式哪个电梯Initialize[_]实例到宏 API 中。

  • 因此,正如您所看到的,通过我们的内部结构实现这一目标是一种黑魔法。我们将不得不寻找一种在 scaladoc 工具中更好地记录 API 的方法。

    关于scala - 如何在 SettingKey 或 TaskKey 上调用 .value?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25246920/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com