小编fmp*_*ard的帖子

Scala - 从List中获取带有扭曲的唯一值

我有一个这样的列表:

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 scala-collections

4
推荐指数
2
解决办法
5029
查看次数

根据设置的值包括构建中的项目,例如scalaVersion?

我有一个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 …

sbt

4
推荐指数
1
解决办法
516
查看次数

分页切片

什么是在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中有更好的方法吗?

谢谢

go

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

部分函数模式匹配分为类和特征

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)

scala partialfunction

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

标签 统计

scala ×2

go ×1

partialfunction ×1

sbt ×1

scala-collections ×1