小编Chu*_*ucK的帖子

Clojure:对嵌套序列进行半展平

我有一个嵌入的矢量列表的列表,看起来像:

(([1 2]) ([3 4] [5 6]) ([7 8]))

我所知道的并不理想.我想把它弄平([1 2] [3 4] [5 6] [7 8]).

flatten不起作用:它给了我(1 2 3 4 5 6 7 8).

我该怎么做呢?我想我需要根据每个列表项的内容创建一个新列表,而不是项目,而这部分我无法从文档中找到如何做.

clojure sequence

45
推荐指数
3
解决办法
1万
查看次数

Scala:忽略equals/hascode的case类字段?

是否可以忽略case类的equals/haschode方法中的case类的字段?

我的用例是我有一个字段,它基本上是类中其余数据的元数据.

scala class pattern-matching

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

Scala:将Set传递给集合的map函数意味着什么

我刚看到我能做到:

Set(1, 2, 3).map(Set(1))
Run Code Online (Sandbox Code Playgroud)

产生结果:

Set(true, false)
Run Code Online (Sandbox Code Playgroud)

但我认为map函数只能采用另一个函数而不是新的Set.如果有什么我希望这会返回一组集合.发生了什么,结果意味着什么?

scala

14
推荐指数
3
解决办法
5261
查看次数

在SBT项目中设置多个测试文件夹

我们想要设置我们的SBT项目,以便我们有多个测试文件夹而不是一个.所以我们希望看到:

    • SRC
      • 测试
        • 斯卡拉
          • 单元
          • 实用

我们如何配置我们的SBT项目文件路径来执行此操作?

scala sbt scalatest

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

在SBT中为多个测试文件夹设置操作

关于上一个问题,我想为不同类型的测试提供多个测试文件夹,并能够使用单独的SBT操作执行每个文件夹中包含的测试.

例如,一个动作'test-unit'只运行src/test/scala/unit文件夹下的测试,'test-functional'动作只运行src/test/scala/functional下的测试.我们如何编写动作来做到这一点?

scala sbt scalatest

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

使用Scala作为XSLT的替代品?

在我的Scala项目中,我们有很多遗留的XSLT,并且想知道我们是否应该将XSLT转换为Scala代码.

我喜欢将XSLTs模板应用到节点的XSLT方法,并且很好地将它用于纯粹的DOM转换,但是不认为它非常适合处理XML文档中的数据(难以阅读和测试) - 我宁愿使用Scala来去做.

鉴于Scala内置的XML支持和模式匹配,我认为它可能是一个很好的替代品.有没有人成功将XSLT脚本转换为Scala?有任何模式或最佳实践吗?

我知道一个旧的项目将XSLT转换为Scala源代码,称为XSLT2src,但是它已经处于休眠状态很长时间并且不支持XSLT2.

谢谢

xml xslt scala

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

使用SBT任务结果作为设置

我正在编写一个 SBT 插件,该插件可以询问项目依赖项,我想将其扩展为询问插件。onload 它通过覆盖此处描述的方式在启动时获取依赖项,并且我State => State通过传入来自 的值来构建一个函数libraryDependencies.value

要获取插件,似乎唯一的方法是通过discoveredSbtPlugins 任务,因此我无法在我的onload覆盖中调用它,因为onload这是一个设置。

那么我怎样才能将 的结果discoveredSbtPlugins.value纳入到我的覆盖中呢onload

scala sbt

5
推荐指数
0
解决办法
326
查看次数

Scala:Seq.distinctOn函数的实现

我正在尝试为一个序列实现一个distinctOn函数,该函数将接受一个函数f并返回一个序列,当f应用于f时,每个项目都有一个不同的结果.例如:

case class Person(name:String, age:Int)

val people = Seq(Person("Al", 20), Person("Bob", 21), 
                 Person("Bob", 24)).distinctOn(_.name)

//people should be:

Seq(Person("Al", 20), Person("Bob", 21))
Run Code Online (Sandbox Code Playgroud)

返回第一个副本(Al)的位置,并保留顺序.我当前的实现包含一个var,而我使用Sets和GroupBy的其他尝试都没有保留顺序.有没有var的更好的方法来实现它?为了记录,我目前的尝试是:

  def distinctOn[A](f: T => A):Seq[T]={
    var seen = Set[A]()

    seq.foldLeft(Seq[T]()) { (res, curr) => {
      if(!seen.contains(f(curr))){
        seen = seen ++ Set[A](f(curr))
        res ++ Seq(curr)
      }else{
        res
      }
    }}
  }
Run Code Online (Sandbox Code Playgroud)

scala scala-collections

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