小编pat*_*rit的帖子

在scala中压缩不等长度列表

我想要这样的东西:

def unequalZip[A, B](a: Iterable[A], b: Iterable[B]) = Iterable[(Option[A], Option[B])]

其中较短的iterable中的项与使用Nones的较长iterable中的项匹配

functional-programming scala zipper scala-collections

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

Scala:for-comprehension类型推理问题的多个flatMap定义

我有这样的事情:

case class Box[A](x: A) {
  def flatMap[B](f: A => GenTraversableOnce[B]): GenTraversableOnce[B] =
    f(x)

  def flatMap[B](f: A => Box[B]): Box[B] =
    f(x)

  def map[B](f: A => B): Box[B] =
    Box(f(x))
}

object Box {
  for {
    i <- Box(0)
    j <- Box(1)
  } yield i + j
}
Run Code Online (Sandbox Code Playgroud)

上面的代码在Scala 2.12.4中编译得很好,但是不能在Scala 2.11.12中编译:

[error] Box.scala:10: missing parameter type
[error]     i <- Box(0)
[error]     ^
[error] one error found
[error] (core/compile:compileIncremental) Compilation failed
Run Code Online (Sandbox Code Playgroud)

为什么?我究竟做错了什么??

然后我尝试了:

for {
  i: Int <- Box(0) …
Run Code Online (Sandbox Code Playgroud)

scala scalac scala-compiler scala-2.11 scala-2.12

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

如何从Excel打开csv文件并突出显示特定行?

我有一个大CSV文件,我想以编程方式在打开它,突出显示一个特定行(我知道行号).最简单的方法是什么?

我认为我的选择是:

  1. 自动将csv文件转换为xlsx文件.我怎么能从脚本中做到这一点?
  2. 打开时给Excel一些参数.不知道Microsoft产品采用什么命令行参数.
  3. 在打开CSV文件并告诉它突出显示特定文件后,以某种方式与Excel进行交互.再也不确定如何.

假设系统安装了Excel,我更喜欢Java/Python/Shell或任何适用于Mac/Windows的东西.所以,我最好的选择可能会让#1我回到如何将CSV文件转换为文件的问题xlsx.

csv vbscript excel vba

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

"或" - Scala中的两个选项?

我想做这样的事情:

def or[A](x: Option[A], y: Option[A]) = x match {
 case None => y   
 case _ => x 
}
Run Code Online (Sandbox Code Playgroud)

这样做的惯用方法是什么?我能想到的最好的是Seq(x, y).flatten.headOption

functional-programming scala scalaz scala-option

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

Scala宏自动生成流畅的构建器

我正在与外部Java API交互,如下所示:

val obj: SomeBigJavaObj = {
  val _obj = new SomeBigJavaObj(p1, p2)
  _obj.setFoo(p3)
  _obj.setBar(p4)
  val somethingElse = {
    val _obj2 = new SomethingElse(p5)
    _obj2.setBar(p6)
    _obj2
   }
  _obj.setSomethingElse(somethingElse)
  _obj
}
Run Code Online (Sandbox Code Playgroud)

基本上,Java API公开了.setXXXX许多返回void和设置内容的方法.我无法控制这些外部POJO.

因此,我想编写一个流畅的buildScala宏来检查对象,并.withXXXX()为每个void setXXXX()返回的方法创建一个builder-pattern类型方法 this:

val obj: SomeBigJavaObj =
  build(new SomeBigJavaObj(p1, p2))
    .withFoo(p3)
    .withBar(p4)
    .withSomethingElse(
       build(new SomethingElse(p5))
         .withBar(p6)
         .result()
    )
    .result()
Run Code Online (Sandbox Code Playgroud)

这可能吗?我知道我无法使用def宏生成新的顶级对象,所以我可以使用类似的人体工程学设置.

scala builder scala-macros scala-macro-paradise scalameta

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

Javascript:计量单位转换库?

是否有信誉良好且全面的单位转换Javascript 库?我不想要任何对 WolframAlpha 或 Google 进行 AJAX 调用的库,而是需要在本地进行计算的库。

javascript math physics unit-conversion

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