我有一个使用宏天堂插件的库(称为宏提供程序库).在build.sbt,
addCompilerPlugin("org.scalamacros" % "paradise" % "2.0.0" cross CrossVersion.full)
Run Code Online (Sandbox Code Playgroud)
获取对宏注释的访问权限.
将宏库作为a添加libraryDependency到单独的项目(称为宏消费者项目)时,会出现注释,但永远不会调用宏实现.将宏天堂编译器插件添加到宏消费者项目libraryDependencies可以解决问题.
是否可以将编译器插件作为传递依赖项包含在内?这将使宏库的消费者免于添加所需的插件.
更新#1:
该addCompilerPlugin助手添加依赖于libraryDependencies和设置与依赖configuration = Some("plugin->default(compile)")宏观供应商库中.
在宏提供程序库中添加paradise依赖项libraryDependencies会导致工件显示在宏消费者项目中.它不会将依赖项添加为编译器插件.
更新#2:
autoCompilerPlugins := true与消息更新#1一起在宏消费者项目中进行设置无法解决问题.
尝试${HOSTNAME}在配置文件中使用不起作用!根据文档,配置文件应解析文档中提到的环境变量:
如果它们在配置本身中没有解析,则替换回退到环境变量,因此$ {HOME}将按预期工作.此外,大多数配置都合并了系统属性,因此您可以使用$ {user.home}.
有没有办法让主机名进入配置文件?
复制
添加host.name=${HOSTNAME}到application.conf文件,然后尝试从任何地方访问它.例如,尝试添加
Logger.info(s"Hostname is ${current.configuration.getString("host.name").getOrElse("NOT-FOUND")}")
Run Code Online (Sandbox Code Playgroud)
到了Global.scala.
环境
这是在一个地方RHEL6环境中运行echo $HOSTNAME产生precise32这样的环境变量存在,这是不是程序hostname.
Scala中是否有一个函数来组合两个映射,或者flatMap是一种合理的方法吗?
scala> val caps: Map[String, Int] = Map(("A", 1), ("B", 2))
caps: Map[String,Int] = Map(A -> 1, B -> 2)
scala> val lower: Map[Int, String] = Map((1, "a"), (2, "b"))
lower: Map[Int,String] = Map(1 -> a, 2 -> b)
scala> caps.flatMap {
| case (cap, idx) => Map((cap, lower(idx)))
| }
res1: scala.collection.immutable.Map[String,String] = Map(A -> a, B -> b)
Run Code Online (Sandbox Code Playgroud)
一些语法糖会很棒!