Tag: scala

为什么对这个Scala代码做一个小小的改变,对性能造成如此巨大的影响?

我正在运行一个32位的Debian 6.0 (Squeeze)系统(一个2.5 GHz的Core 2 CPU),sun-java6 6.24-1,但使用了Wheezy的Scala 2.8.1软件包。 这个编译scalac -optimise代码需要30多秒的时间才能运行: object Performance { import scala.annotation.tailrec @tailrec def gcd(x:Int,y:Int):Int = { if (x == 0) y else gcd(y%x,x) } val p = 1009 val q = 3643 val t = (p-1)*(q-1) val es = (2 until t).filter(gcd(_,t) == 1) def main(args:Array[String]) { println(es.length) } } 但是,如果我把这个小小的变化移动到main的范围内,那么它会在1秒内运行,这更像是我希望看到的,与相当于C […]

如何configuration未来的微调线程池?

斯卡拉的期货线程池有多大? 我的Scala应用程序创造了数百万的future {} ,我想知道是否有任何事情可以通过configuration线程池来优化它们。 谢谢。

如何在Play框架中处理可选的查询参数

比方说,我有一个已经运作的基于Play 2.0框架的应用程序在Scala中提供一个URL,如: HTTP://本地主机:9000 /生日 其中列出了所有已知的生日 我现在想通过添加限制结果的能力来增强这个function,可选的“from”(date)和“to”请求参数,例如 HTTP://本地主机:9000 /生日从= 20120131&到= 20120229? (这里的date解释为yyyyMMdd) 我的问题是如何在Scala中处理Play 2.0中的请求参数绑定和解释,尤其是考虑到这两个参数都应该是可选的。 这些参数是否应该用“路线”规范expression? 或者,如果响应的Controller方法以某种方式从请求对象中分离参数? 有没有另外一种方法来做到这一点?

有人可以向我解释无形文库的用途吗?

有人可以简单地向我解释什么是无形的图书馆? 斯卡拉有generics和inheritancefunction,所以我有点困惑什么是无形的。 也许一个用例来澄清事情会有所帮助。

如何与Scala REPL一起使用第三方库?

我已经下载了Algebird ,我想在Scala解释器中使用这个库来尝试一些东西。 我如何做到这一点?

任何真实的使用软件事务内存的经验?

STM(软件事务内存)框架和语言扩展最近似乎越来越受到关注。 特别是Clojure有一个很好的实现,它使用MVCC(多版本并发控制)而不是滚动提交日志。 GHC Haskell也有一个非常优雅的STM monad ,它也允许交易组成。 最后,为了使我自己的号angular变得有些小,我最近实现了一个Scala的STM框架,它静态地强制引用限制。 所有这些都是有趣的实验,但它们似乎仅限于这个领域(实验)。 所以我的问题是:有没有人在现实世界中看过或使用过STM? 如果是这样,为什么? 它带来了什么样的好处? 性能呢? (关于这一点,似乎有很多矛盾的信息)你会再次使用STM还是更喜欢使用一些像演员一样的其他并发抽象?

斯卡拉双重定义(2种方法有相同types的删除)

我用scala写这个,不会编译: class TestDoubleDef{ def foo(p:List[String]) = {} def foo(p:List[Int]) = {} } 编译器通知: [error] double definition: [error] method foo:(List[String])Unit and [error] method foo:(List[Int])Unit at line 120 [error] have same type after erasure: (List)Unit 我知道JVM没有原生支持generics,所以我明白这个错误。 我可以为List[String]和List[Int]编写包装,但我很懒惰:) 我怀疑,但是,有没有另一种方式expressionList[String]不是比List[Int]相同的types? 谢谢。

什么是“多态点菜”,我怎样才能从中受益呢?

Rick Hickey在Simple Made Easy的演讲中谈到了“ 多态点菜 ”(约30点到video)。 在同样的背景下,他还提到了Haskell的types类和Clojure的多方法 (和协议)。 由于我对这些概念不是很熟悉,所以我想了解它在实现简单性时的用处。 我对Scala中这个概念的任何例子或展示特别感兴趣。

你如何在Scala的主构造函数中定义一个本地var / val?

在Scala中,一个类的主要构造函数没有明确的主体,但是从类主体隐式定义。 那么,如何区分字段和本地值(即构造函数方法的本地值)呢? 例如,采取下面的代码片段,一个从“Programming in Scala”中的一些示例代码的修改forms: class R(n: Int, d: Int) { private val g = myfunc val x = n / g val y = d / g } 我的理解是这将产生一个有三个领域的类:一个私有的“g”,以及公共的“x”和“y”。 但是,g值只用于计算x和y字段,超出构造函数范围没有意义。 所以在这个(不可否认的)例子中,你如何去为这个构造函数定义本地值呢?

为什么追加到列表不好?

我最近开始学习scala,并且遇到了:: :(cons)函数,这个函数前面是一个列表。 在“Scala编程”一书中,它指出不存在追加函数,因为追加到列表的性能为o(n),而预先计算的性能为o(1) 有些事情让我觉得这个说法是错误的。 性能是否依赖于实现? 是不是可以简单地实现与前进和后退链接的列表,并将第一个和最后一个元素存储在容器中? 我想第二个问题是当我有一个列表时,我应该做什么,说1,2,3,我想添加4到最后?