小编tys*_*njh的帖子

SBT编译器插件作为传递依赖

我有一个使用宏天堂插件的库(称为宏提供程序库).在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一起在宏消费者项目中进行设置无法解决问题.

macros scala sbt

14
推荐指数
1
解决办法
490
查看次数

Typesafe配置环境变量

尝试${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.

configuration akka playframework typesafe

8
推荐指数
2
解决办法
8402
查看次数

撰写两张地图

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)

一些语法糖会很棒!

dictionary scala

5
推荐指数
1
解决办法
1058
查看次数

标签 统计

scala ×2

akka ×1

configuration ×1

dictionary ×1

macros ×1

playframework ×1

sbt ×1

typesafe ×1