小编Eri*_*o -的帖子

将Eithers列表变成列表之一的最佳方法?

我有一些代码,如下所示,我有一个Eithers列表,我想把它变成一个列表...特别是(在这种情况下),如果列表中有任何Lefts,那么我返回a列表的左侧,否则我返回权利列表的权利.

val maybe: List[Either[String, Int]] = getMaybe
val (strings, ints) = maybe.partition(_.isLeft)
strings.map(_.left.get) match {
  case Nil => Right(ints.map(_.right.get))
  case stringList => Left(stringList)
}
Run Code Online (Sandbox Code Playgroud)

打电话get总让我觉得我必须遗漏一些东西.

有没有比较惯用的方法呢?

scala either

33
推荐指数
4
解决办法
8718
查看次数

生成代码流

人们真的在生产代码中使用Scala的Stream类,还是主要是学术兴趣?

scala

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

Netty中的连接池

我正在尝试使用Netty构建反向代理,并且我希望将一个打开的套接字池保留到后端服务器,而不是每个传入的套接字都需要从反向代理到后端服务器的新套接字.

你能用Netty做到这一点吗?怎么样?

谢谢你的帮助

netty

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

您可以创建(Oracle JVM)Java堆的最小值是多少?

java很乐意接受-Xmx1k作为参数,但"实验显示"这仍然像8MB堆.

谷歌搜索没有使用任何东西,所以我想知道,你可以在Java中授权的最小堆大小是多少?

谢谢,埃里克

编辑:

它似乎因平台和java版本而有所不同.在我的Mac上,使用1.6.0_24,我可以配置它而没有错误的最小值是:

$ java -Xms1k -Xmx4097k -XX:NewSize=192k  -cp . Foo
5636096
Run Code Online (Sandbox Code Playgroud)

或大约5.375M,其中Foo.java只是:

public class Foo {
    public static void main(String[] args) {
        System.out.println(Runtime.getRuntime().totalMemory());
    }
}
Run Code Online (Sandbox Code Playgroud)

因此我的环境是:

$ uname -a
Darwin turbo.local 10.7.0 Darwin Kernel Version 10.7.0: Sat Jan 29 15:17:16 PST 2011; root:xnu-1504.9.37~1/RELEASE_I386 i386
$ java -version
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07-334-10M3326)
Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02-334, mixed mode)
Run Code Online (Sandbox Code Playgroud)

正如我在下面的评论中提到的,我设置了一个小堆试图验证一个昂贵的算法确实几乎没有使用内存,而不是试图省钱.

谢谢你的答案 - 当我试图谷歌这个时,我很沮丧.

java

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

使用scalacheck生成任意(合法)Unicode字符?

我正在尝试使用scalacheck 1.6.6和specs 1.7(scala 2.8.1)创建一个生成(非零长度)合法unicode字符串的生成器.

我希望我可以创建如下的生成器:

object Generators {
  def unicodeChar: Gen[Char] = 
    choose(Math.MIN_CHAR, Math.MAX_CHAR).map(_.toChar).filter(
      c => Character.isDefined(c))
  def unicodeStr: Gen[String] = for(cs <- listOf1(unicodeChar)) yield cs.mkString
}
Run Code Online (Sandbox Code Playgroud)

...然后从规格中使用它们:

import org.specs.Specification
import org.specs.matcher.ScalaCheckMatchers

object CoreSpec extends Specification with ScalaCheckMatchers {        
  "The core" should {    
    "pass trivially" in {
      Generators.unicodeStr must pass((s: String) => s == s)
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,似乎在unicodeChar中使用过滤器会导致问题:

Specification "CoreSpec"
  The core should
  x pass trivially
    Gave up after only 64 passed tests. 500 tests were discarded.
Run Code Online (Sandbox Code Playgroud)

如果我从unicodeChar中删除过滤器,我的测试通过了,但我后来遇到其他问题,因为我的字符串并不总是定义良好的unicode.

提前感谢有关如何实现这一目标的任何建议.

specs scala scalacheck

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

scala对象作为字段

可能重复:
scala类中的val和对象?

是否存在实质性差异:

class Foo {
  object timestamp extends java.util.Date
}
Run Code Online (Sandbox Code Playgroud)

class Foo {
  val timestamp = new java.util.Date {}
}
Run Code Online (Sandbox Code Playgroud)

拥有一个具有对象字段的类真正意味着什么?它们用于什么?是否有必须使用对象的情况?

谢谢...

scala

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

标签 统计

scala ×4

either ×1

java ×1

netty ×1

scalacheck ×1

specs ×1