小编Ste*_*fen的帖子

Scala 2.9并行集合如何在幕后工作?

Scala 2.9引入了并行集合.对于某些任务来说,它们是非常棒的工具.但是,它们如何在内部工作,我是否能够影响行为/配置?

他们使用什么方法来确定最佳线程数?如果我对结果不满意,是否有任何配置参数需要调整?

我不仅对实际创建了多少线程感兴趣,我还对实际工作如何在它们之间分配感兴趣.如何收集结果以及幕后有多少魔法.Scala是否会以某种方式测试集合是否足够大以便从并行处理中受益?

parallel-processing scala scala-collections

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

如何使用Scalacheck的Specs2自动测试String参数?

Scala 重写的specs2测试框架将自动化测试与scalacheck集成在一起.specs2文档中给出的关于如何将scalacheck与specs2一起使用的示例使用整数或更复杂的自定义生成器,如eric的json示例中所示.

虽然试图让一个稍微不那么复杂的例子工作,但我很难挣扎,因为我不知道如果我想生成String参数而不是Integers,会如何使用specs2和scalacheck.这个快速入门示例如何?


import org.scalacheck._

object StringSpecification extends Properties("String") { property("startsWith") = Prop.forAll((a: String, b: String) => (a+b).startsWith(a))

property("endsWith") = Prop.forAll((a: String, b: String) => (a+b).endsWith(b))

// Is this really always true? property("concat") = Prop.forAll((a: String, b: String) => (a+b).length > a.length && (a+b).length > b.length )

property("substring") = Prop.forAll((a: String, b: String) => (a+b).substring(a.length) == b )

property("substring") = Prop.forAll((a: String, b: String, c: String) => (a+b+c).substring(a.length, a.length+b.length) == b ) …

Run Code Online (Sandbox Code Playgroud)

specs scala scalacheck specs2

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

在将来包装时使用阻塞actor消息是否可以?

我目前的申请是基于akka 1.1.它有多个ProjectAnalysisActors负责处理特定项目的分析任务.当这样的actor接收到通用开始消息时,开始分析.完成一个步骤后,只要定义了一个步骤,它就会向下一步发送一条消息.执行代码基本上如下所示


sealed trait AnalysisEvent {
   def run(project: Project): Future[Any]
   def nextStep: AnalysisEvent = null
}

case class StartAnalysis() extends AnalysisEvent {
   override def run ...
   override def nextStep: AnalysisEvent = new FirstStep
}

case class FirstStep() extends AnalysisEvent {
   override def run ...
   override def nextStep: AnalysisEvent = new SecondStep
}

case class SecondStep() extends AnalysisEvent {
   ...
}

class ProjectAnalysisActor(project: Project) extends Actor {

    def receive = {
        case event: AnalysisEvent =>
            val future = event.run(project) …
Run Code Online (Sandbox Code Playgroud)

scala actor akka

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

如何更改组合期货的超时?

在关于组成期货的akka​​ 1.1文档的例子中,我想知道如何以编程方式设置生成的未来的超时.我知道我可以调整akka.conf中的全局超时,但是我想仅为这段代码做到这一点.

示例代码如下所示

val f1 = actor1 !!! msg1
val f2 = actor2 !!! msg2

val f3 = for {
   a: Int    <- f1
   b: Int    <- f2
   c: String <- actor3 !!! (a + b)
} yield c

val result = f3.get()
Run Code Online (Sandbox Code Playgroud)

我是对的,akka在这个例子中总共创造了四个期货吗?

  • 每个消息一个发送给actor1,2和3
  • 一个包装这三个未来

在第一种情况下很容易改变超时,例如

val f1 = actor1 !!! (msg1, 15000)  // sets timeout to 15 seconds
Run Code Online (Sandbox Code Playgroud)

但是如何设置包装未来的超时?有任何想法吗?

scala actor akka

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

如何在Squeryl中定义am:n与其他属性的关系?

给定具有am:n关系的遗留数据库以及关系的一些附加属性,如何使用squeryl定义.最后,表格应如下所示:


   +--------------+      +---------------+      +----------------+
   | TableA       |      | Rel_A_B       |      | TableB         |
   +--------------+ ____ +---------------+ ____ +----------------+
   | id: Int      |      | tableA: int   |      | compkey_1: int |
   | (more attrs) |      | tableB_1: int |      | compkey_2: int |
   +--------------+      | tableB_2: int |      | (more attrs)   |
                         | value: Varchar|      +----------------+
                         | date: Date    |
                         +---------------+

使用squeryl手动定义三个表没有问题.但是,据我所知,目前的文档(0.9.4)没有可能与关系的其他属性定义多对多关系.

这就是我定义三个表和两个一对多关系的原因:


// TableA
class TableA(val id: Int, ...) extends KeyedEntity[Int] {
    def this() = this(0, ...)
}

// TableB …
Run Code Online (Sandbox Code Playgroud)

database-design scala squeryl

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

测量Eclipse中测试用例中的Scala代码覆盖率

我处于这种情况,我有许多ScalaTest编写的测试(JUnit兼容),我想测量运行测试时我得到的代码覆盖率.

我不想直接使用SBT,但有一个Eclipse Scala项目,其中我有许多我想运行的测试用例.

对我来说最好的方法是什么?

eclipse testing scala code-coverage

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

sbt和antlr,举个简单的例子?

有没有人有一个如何设置sbt来构建一个ANTLR文件(到scala),然后编译生成的代码的例子.

我的文件布局

 src/main/scala/Test.scala     // scala test rig
 src/main/scala/Test.g         // antlr grammar

 build/antlr/TestParser.scala  // antlr output files
 build/antlr/TestLexer.scala
Run Code Online (Sandbox Code Playgroud)

我的sbt应该包含什么?我知道有一个插件用于拉动ANTLR的规则,但我无法使其工作.(这个世界还是新手)

scala antlr3 sbt

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

针对不同的启动器版本交叉构建sbt插件?

有没有一种方便的方法可以针对多个sbt版本自动交叉构建sbt 0.10/0.11.x插件?我想这有点鸡蛋问题,但也许有人知道如何解决这个问题.

注意,我不是在寻找scala交叉构建,这个问题只针对sbt-plugins.

plugins scala sbt

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

使用Scala在文本中查找单词对的最优雅方法是什么?

给出一个单词对列表

val terms = ("word1a", "word1b") :: ("word2a", "word2b") :: ... :: Nil
Run Code Online (Sandbox Code Playgroud)

Scala中最优雅的方法是测试文本中是否至少有一对出现?当测试到达第一场比赛时,测试应该尽快终止.你会如何解决这个问题?

编辑:更确切地说,我想知道一对中的两个单词是否出现在文本中的某个位置(不一定按顺序).如果列表中的一个对的情况如此,则该方法应该返回true.没有必要返回匹配的对,如果多于一对匹配则不重要.

scala pattern-matching

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