我有一个Play 2.2.x项目,我可以为其创建通用分发zip存档:
$ sbt dist
Run Code Online (Sandbox Code Playgroud)
这会创建一个文件 target/universal/project-name-1.0-SHAPSHOT.zip
我想包含一个git commit sha,这样生成的包看起来像这样:
target/universal/project-name-1.0-SHAPSHOT-0d6d7f4325de87df6a8f46bd635d14ba8892715a.zip
Run Code Online (Sandbox Code Playgroud)
在Play 2 Framework中,如何在sbt dist包名中包含git commit sha?
假设我在Scala中有一个nexted Map,如下所示:
type MapType = Map[String, Map[String, Map[String, (String, String)]]]
val m: MapType = Map("Alphabet" -> Map( "Big Boss" -> Map("Clandestine Mssion" -> ("Dracula Returns", "Enemy at the Gates"))))
println(m)
Run Code Online (Sandbox Code Playgroud)
这将输出Map,如下所示:
Map(Alphabet -> Map(Big Boss -> Map(Clandestine Mssion -> (Dracula Returns,Enemy at the Gates))))
Run Code Online (Sandbox Code Playgroud)
我怎样才能像下面那样打印出来?:
Map(
Alphabet -> Map(Big Boss -> Map(
Clandestine Mssion -> (Dracula Returns,Enemy at the Gates)
)
)
)
Run Code Online (Sandbox Code Playgroud)
或者以类似于漂亮嵌套的JSON的方式.
我已经看到了这个问题:将函数应用于Scala中的元组
理想情况下,我只想这样做:
scala> val t = ("A", "B", "C")
t: (java.lang.String, java.lang.String, java.lang.String) = (A,B,C)
scala> "%-10s %-50s %s".format(t) // or some closer syntax
Run Code Online (Sandbox Code Playgroud)
哪个应该输出为
res12: String = A B C
Run Code Online (Sandbox Code Playgroud)
或者在某种意义上,Scala编译器应该能够推断出我实际上正在调用正确的参数和类型
"%-10s %-50s %s".format(t.untuple) 扩展到 "%-10s %-50s %s".format(t._1, t._2, t._3)
我可以使用宏来执行此操作吗?
我有一个元组用于格式化字符串:
scala> val t = ("A", "B", "C")
t: (java.lang.String, java.lang.String, java.lang.String) = (A,B,C)
scala> "%-10s %-50s %s".format(t.productElements.toList: _*)
warning: there were 1 deprecation warnings; re-run with -deprecation for details
res10: String = A …Run Code Online (Sandbox Code Playgroud) 我使用scalaz进行一些验证,在代码中的某处有布尔条件.示例如下所示:
import scalaz._, std.AllInstances._
object Temporary {
def validate(x: Int): scalaz.Validation[List[String], Boolean] = {
try {
if (x < 10) {
scalaz.Success(true)
} else {
throw new RuntimeException("why oh why")
}
} catch {
case e: Throwable => scalaz.Failure(List(e.getMessage))
}
}
def main(args: Array[String]) {
val x = validate(1) +++ validate(10)
println(x)
val y = List(1,2,4,10).map(validate(_)).reduce(_ +++ _)
println(y)
}
}
Run Code Online (Sandbox Code Playgroud)
我得到以下编译错误.
Error:(21, 25) could not find implicit value for parameter M1: scalaz.Semigroup[Boolean]
val x = validate(1) +++ validate(10)
^ …Run Code Online (Sandbox Code Playgroud) 我有一个数据框,其中一列有多个值(以逗号分隔):
mydf <- structure(list(Age = c(99L, 10L, 40L, 15L),
Info = c("good, bad, sad", "nice, happy, joy", "NULL", "okay, nice, fun, wild, go"),
Target = c("Boy", "Girl", "Boy", "Boy")),
.Names = c("Age", "Info", "Target"),
row.names = c(NA, 4L),
class = "data.frame")
> mydf
Age Info Target
1 99 good, bad, sad Boy
2 10 nice, happy, joy Girl
3 40 NULL Boy
4 15 okay, nice, fun, wild, go Boy
Run Code Online (Sandbox Code Playgroud)
我想将Info列拆分为一个热编码列,并将结果附加到Target列之外,例如:
Age Info Target good bad …Run Code Online (Sandbox Code Playgroud) 我想在whereSlick查询的方法中添加两个子句.我有代码:
val users = TableQuery[Users]
val actions = TableQuery[Acts]
val filteredUsers = users.where(.....) // Some condition
val acts = actions.where(_.domain === 10)
val ownerAct = acts.where(_.owner in filteredUsers)
val assigneeAct = acts.where(_.assignee in filteredUsers)
Run Code Online (Sandbox Code Playgroud)
我想获取属于过滤用户assignee或ownerer过滤用户的操作.我希望代码是这样的:
val users = TableQuery[Users]
val actions = TableQuery[Acts]
val filteredUsers = users.where(.....) // Some condition
val acts = actions.where(_.domain === 10)
val ownerOrAssigneeAct = acts.where(_.owner in filteredUsers).
or(_.assignee in filteredUsers)
Run Code Online (Sandbox Code Playgroud)
如何使用Scala Slick 2.0在.where()中生成这样的OR查询?
假设我有一个接受对象和列表的函数:
case class Point(x: Int, y: Int)
def f1(w: Point, l: List[String]) = { /* do something /* }
Run Code Online (Sandbox Code Playgroud)
我通常会这样使用它:
val w = Point(1,1)
val lst = List("Hello", "world")
f1(w, lst) // non empty list
Run Code Online (Sandbox Code Playgroud)
很多时候我需要调用带有空列表的函数作为第二个参数:
f1(w, List()) // empty list
f1(w, Nil) // empty list
Run Code Online (Sandbox Code Playgroud)
最后两行之间有任何性能差异吗?
我认为使用List()会调用List.apply()方法.Scala编译器是否将其优化为Nil?
这不是Scala的重复:Nil vs List()
注意:Nilvs 之间有任何性能差异List()吗?Scala编译器是否在此进行任何优化?