我有一个这样的列表:
val l= List(("Agent", "PASS"), ("Agent", "FAIL"), ("Agent 1", "FAIL"), ("Agent", "PASS"), ("Agent 2", "PASS") )
Run Code Online (Sandbox Code Playgroud)
我需要得到一个这样的列表:
val filteredList= List(("Agent", "FAIL"), ("Agent 1", "FAIL"), ("Agent 2", "PASS") )
Run Code Online (Sandbox Code Playgroud)
发生了什么?
("Agent", "PASS"), ("Agent", "FAIL")
Run Code Online (Sandbox Code Playgroud)
变
("Agent", "FAIL")
Run Code Online (Sandbox Code Playgroud)
(因为如果至少有一次失败,我需要保留该条目)
代理1和代理2的条目保持不变,因为每个条目只有一个条目.
我找到的最接近的答案是 如何在Scala中找到列表中的唯一项目, 但我无法告诉如何使用FAIL保留条目.
我希望这个问题很清楚,如果没有,我可以给你一个更好的例子.
谢谢
我有一个Scala项目,分为几个子项目:
lazy val core: Seq[ProjectReference] = Seq(common, json_scalaz7, json_scalaz)
Run Code Online (Sandbox Code Playgroud)
我想core在我目前正在使用的Scala版本上使用lazy val,所以我尝试了这个:
lazy val core2: Seq[ProjectReference] = scalaVersion {
case "2.11.0" => Seq(common, json_scalaz7)
case _ => Seq(common, json_scalaz7, json_scalaz)
}
Run Code Online (Sandbox Code Playgroud)
简单来说,我想排除json_scalazScala 2.11.0(当scalaVersion设置值为时"2.11.0").
但是这给了我以下编译错误:
[error] /home/diego/work/lift/framework/project/Build.scala:39: type mismatch;
[error] found : sbt.Project.Initialize[Seq[sbt.Project]]
[error] required: Seq[sbt.ProjectReference]
[error] lazy val core2: Seq[ProjectReference] = scalaVersion {
[error] ^
[error] one error found
Run Code Online (Sandbox Code Playgroud)
不知道怎么解决这个问题?
更新
我正在使用sbt版本0.12.4这个项目是Lift项目,它编译反对"2.10.0", "2.9.2", "2.9.1-1", "2.9.1" and now we are working on getting …
什么是在Go中对切片进行分页并避免错误的最佳方法 panic: runtime error: slice bounds out of range
例如,如果我有一个切片
slice := []int{1, 2, 3, 4, 5, 6, 7}
Run Code Online (Sandbox Code Playgroud)
我打电话给
slice[6:10]
Run Code Online (Sandbox Code Playgroud)
我得到了恐慌错误.
我想出了这个:
func paginate(x []int, skip int, size int) []int {
limit := func() int {
if skip+size > len(x) {
return len(x)
} else {
return skip + size
}
}
start := func() int {
if skip > len(x) {
return len(x)
} else {
return skip
}
}
return x[start():limit()]
}
Run Code Online (Sandbox Code Playgroud)
在Go中有更好的方法吗?
谢谢
Lift在Comet Actors的实现上使用了PartialFunction,你通常会在你的类上得到它:
override def lowPriority: PartialFunction[Any,Unit] = {
case MyCaseClass1(a) => do something here
case MyCaseClass2(a) => do something here
case AlwaysPresentCaseClass => default action
}
Run Code Online (Sandbox Code Playgroud)
我想做什么,我不确定是否可能分割该部分功能,以便最后一个案例可以移动到特征中.
所以,当我有一个新的彗星演员时,我只是这样做:
class MyNewComet extends MyActorTrait {
override def lowPriority: PartialFunction[Any,Unit] = {
case MyCaseClass1(a) => do something here
case MyCaseClass2(a) => do something here
}
}
Run Code Online (Sandbox Code Playgroud)
不知何故,特质MyActorTrait将失踪
case AlwaysPresentCaseClass => default action
Run Code Online (Sandbox Code Playgroud)