我有一个嵌入的矢量列表的列表,看起来像:
(([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).
我该怎么做呢?我想我需要根据每个列表项的内容创建一个新列表,而不是项目,而这部分我无法从文档中找到如何做.
是否可以忽略case类的equals/haschode方法中的case类的字段?
我的用例是我有一个字段,它基本上是类中其余数据的元数据.
我刚看到我能做到:
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项目中,我们有很多遗留的XSLT,并且想知道我们是否应该将XSLT转换为Scala代码.
我喜欢将XSLTs模板应用到节点的XSLT方法,并且很好地将它用于纯粹的DOM转换,但是不认为它非常适合处理XML文档中的数据(难以阅读和测试) - 我宁愿使用Scala来去做.
鉴于Scala内置的XML支持和模式匹配,我认为它可能是一个很好的替代品.有没有人成功将XSLT脚本转换为Scala?有任何模式或最佳实践吗?
我知道一个旧的项目将XSLT转换为Scala源代码,称为XSLT2src,但是它已经处于休眠状态很长时间并且不支持XSLT2.
谢谢
我正在编写一个 SBT 插件,该插件可以询问项目依赖项,我想将其扩展为询问插件。onload 它通过覆盖此处描述的方式在启动时获取依赖项,并且我State => State通过传入来自 的值来构建一个函数libraryDependencies.value。
要获取插件,似乎唯一的方法是通过discoveredSbtPlugins 任务,因此我无法在我的onload覆盖中调用它,因为onload这是一个设置。
那么我怎样才能将 的结果discoveredSbtPlugins.value纳入到我的覆盖中呢onload?
我正在尝试为一个序列实现一个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)