相关疑难解决方法(0)

将Seq或List转换为collection.immutable.Queue

我想知道,如果在Scala中将Sequence转换为不可变队列有标准和简短的方法吗?

我没有在文档中找到一种神奇的方法.

现在我这样做:

def toQueue[A](s: Seq[A]): Queue[A] = s match {
  case x +: xs => x +: toQueue(xs)
  case _ => Queue.empty[A]
}                                         
Run Code Online (Sandbox Code Playgroud)

但还有什么更方便的吗?

queue collections scala

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

如何将List(String,String)转换为ListMap [String,String]?

我有一个类型列表,List(String,String)我想将其转换为地图.当我使用toMap方法时,我发现它没有保留List中的数据顺序.但是我的目标是通过保持数据的顺序与List相同,将列表转换为Map.我学会了ListMap保留插入顺序(但它是不可变的)所以我可以使用带有map函数的LinkedHashMap顺序插入数据,LinkedHashMap但这意味着我需要遍历所有痛苦的元素.任何人都可以建议我一个更好的方法吗?谢谢

scala scala-collections

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

Scala在Variadic函数中用下划线标出星号?

我目前正在遵循Scala中的函数编程

这是applyin 的伪实现List[A]

def apply[A](as: A*): List[A] = 
  if (as.isEmpty) Nil
  else ::(as.head, apply(as.tail: _*))
Run Code Online (Sandbox Code Playgroud)

如果我忽略: _*as.tail: _*,斯卡拉抱怨的类型不匹配,这是有道理的,因为as.tailSeq[A]在这里.

但这_*到底做了什么?

编辑::

正确的术语是序列通配符

scala

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

Spark的Column.isin函数不带List

我正在尝试从Spark Dataframe中过滤出行.

val sequence = Seq(1,2,3,4,5)
df.filter(df("column").isin(sequence))
Run Code Online (Sandbox Code Playgroud)

不幸的是,我得到了一个不受支持的文字类型错误

java.lang.RuntimeException: Unsupported literal type class scala.collection.immutable.$colon$colon List(1,2,3,4,5)
Run Code Online (Sandbox Code Playgroud)

根据文档,它采用scala.collection.Seq列表

我想我不想要文字?然后我可以接受什么样的包装类呢?

java scala apache-spark

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

理解 Scala 的下划线和星号魔法

我正在阅读和练习 Scala,我发现了这个博客

阅读关于组合谓词的部分我看到了这段代码

def complement[A](predicate: A => Boolean) = (a: A) => !predicate(a)

def any[A](predicates: (A => Boolean)*): A => Boolean =
  a => predicates.exists(pred => pred(a))

def none[A](predicates: (A => Boolean)*) = complement(any(predicates: _*))

def every[A](predicates: (A => Boolean)*) = none(predicates.view.map(complement(_)): _*)
Run Code Online (Sandbox Code Playgroud)

我有 python 背景,想了解下划线和星号的含义,单独或一起使用时,理解它很奇怪,特别是对于noneevery定义。

scala

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

:scala中的_*表示法

我遇到了这个:_*表示许多spark-scala答案,但找不到任何文档.实际上是什么意思?这种用法的一个例子就是这个问题的答案

如何在Spark Java中使用isin的DataFrame过滤器?

线:

df.filter(col("something").isin(list: _*)
Run Code Online (Sandbox Code Playgroud)

scala

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

如何在Chisel(regmap)中迭代类似的寄存器定义

我有一些类似的寄存器定义,我想在regmap构造下编写.我的代码目前看起来像这样:

val regs = RegInit(Vec(Seq.fill(5)(0.U(32.W))))

regmap (
...
0x30 -> Seq(RegField(32,regs(0),RegFieldDesc("reg0",""),
0x34 -> Seq(RegField(32,regs(1),RegFieldDesc("reg1",""),
0x38 -> Seq(RegField(32,regs(2),RegFieldDesc("reg2",""),
0x3C -> Seq(RegField(32,regs(3),RegFieldDesc("reg3",""),
0x40 -> Seq(RegField(32,regs(4),RegFieldDesc("reg4",""),
...

) 
Run Code Online (Sandbox Code Playgroud)

我的问题是,有没有办法使用Scala迭代器之一以更简洁的方式编写上述内容?我的另一个要求是我仍然需要能够在这个迭代器之前和之后添加寄存器(3个点线).

我相信,使用迭代器可以很好地防止复制/粘贴错误并且看起来更好.
在此先感谢您的帮助.

chisel rocket-chip

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

没有隐式视图可用

当我试图DBObject通过插入批量加载一个列表时,我得到了no implicit view available.

collection.insert(listObjects) // listObjects is a List[DBObject]

[error]Test.scala:139: No implicit view available from List[com.mongodb.casba
h.Imports.DBObject] => com.mongodb.casbah.Imports.DBObject.
Run Code Online (Sandbox Code Playgroud)

这个错误是什么意思?我怎么解决?

参考:

def insert [A] (docs: List[A])(implicit arg0: (A) ? DBObject) : WriteResult

scala implicit mongodb implicit-conversion casbah

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

Spark Dataframes:如何更改Java/Scala中的列顺序?

在连接两个数据帧之后,我发现列顺序已经改变了我认为的那样.

实施例:加入两个数据帧的列[b,c,d,e][a,b]b产量的列顺序[b,a,c,d,e].

如何更改列的顺序(例如[a,b,c,d,e])?我已经找到了在Python/R中实现它的方法,但不是Scala或Java.是否有任何方法允许交换或重新排序dataframe列?

java scala dataframe spark-dataframe

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

":_*" 在 Scala 中是什么意思?(使用列表过滤数据框时)

当看到一些同事的 Scala-Spark 代码时,有时我会遇到他们使用列表来过滤数据帧,如下例所示:

val myList: List[String] = List("0661", "0239", "0949", "0380", "0279", "0311")

df.filter(col("col1").isin(myList:_*)
Run Code Online (Sandbox Code Playgroud)

上面的代码工作得很好,但是,这个没有:

df.filter(col("col1").isin(myList)
Run Code Online (Sandbox Code Playgroud)

我不明白的是,那个“冒号下划线星”:_*到底在做什么?

提前致谢!

scala list dataframe underscore.js apache-spark

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

将序列传递给不使用类型归属的varargs方法

我正在使用第三方库,正在尝试做一些抽象操作,并且遇到了一个接受varargs但未使用类型描述的方法的问题。就像是:

  def outer(otherStuff:String*): Unit ={
    if(someCondition)
      methodInThirdPartyLibrary(otherStuff)
    // other code....
  }

  def methodInThirdPartyLibrary(stuff:String*): Unit ={
    println(stuff.mkString(","))
  }
Run Code Online (Sandbox Code Playgroud)

给定库如何设置方法,是否有任何方法可以传递参数?

scala

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

如何将Stream [IO,List [A]]转换为Stream [IO,A]

我想解析一个json文件,该文件输出的集合A。的签名OutputIO[List[A]]

我怎样才能将此值转换为StreamStream[IO, A]?我可以转换为一个,Stream[IO, List[A]]但不是我想要的

fs2.Stream.eval(input).flatMap(x => fs2.Stream.apply(x)) 谢谢

scala scala-cats fs2

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