Tag: 斯卡拉

撰写和然后方法

我正在按照Scala andThen 模式匹配和function组合以及和方法。 有这样一个例子: scala> def addUmm(x: String) = x + " umm" scala> def addAhem(x: String) = x + " ahem" val ummThenAhem = addAhem(_).compose(addUmm(_)) 当我尝试使用它时,我得到一个错误: <console>:7: error: missing parameter type for expanded function ((x$1) => addAhem(x$1).compose(((x$2) => addUmm(x$2)))) val ummThenAhem = addAhem(_).compose(addUmm(_)) ^ <console>:7: error: missing parameter type for expanded function ((x$2) => […]

Scala模式匹配列表以外的序列

我有以下代码recursion操作列表中的每个元素 def doMatch(list: List[Int]): Unit = list match { case last :: Nil => println("Final element.") case head :: tail => println("Recursing…"); doMatch(tail) } 现在,忽略这个function可以通过filter()和foreach() ,这工作得很好。 但是,如果我试图改变它接受任何Seq [Int] ,我遇到了问题: Seq没有::,但它确实有+:,据我所知基本上是一样的东西。 如果我试图匹配head +:tail,但是,编译器会抱怨错误:not found:value +:' 无特定于列表,我不知道如何replace它。 如果我经历过前面的问题,我会尝试Seq() 这是我认为代码应该看起来如何,除非它不工作: def doMatch(seq: Seq[Int]): Unit = seq match { case last +: Seq() => println("Final element.") case head +: […]

学习Haskell以学习Scala

我已经阅读了一些问题,例如斯卡拉vs哈斯克尔讨论两种语言的优点或学习,但我已经知道我想学习斯卡拉。 我是uni的Java程序员,现在主要使用PHP。 我想学习Scala,因为它看起来像个人项目的Java改进,我也想学习一个函数式语言来提高我作为程序员的知识。 我想知道是否将Haskell作为函数式编程的入门知识是一个好主意,因为它是纯粹的function性的,所以我会正确地学习它,而不是在Scala中使用一些函数,而不知道为什么? 我也想使用Haskell作为个人项目等,因为它看起来不错,但我真的没有看到它的许多真实世界的应用程序,似乎更多地用于学术的东西,因此想学习它获得function的理解,然后继续前进斯卡拉。

IntelliJ IDEA 13 CE消耗大量的CPU

我从几天前的IntelliJ IDEA从12 CE升级到13 CE,并且一直在占用CPU。 每隔几分钟就会达到450-500%,然后下降到100-200%。 另外,我已经将我的Scala插件升级到了0.30.380。 不知道是什么原因造成的?

改进Scala的JVM

对JVM进行哪些更改将最有利于Scala编译器和运行时? dynamic语言在引入计划到达JVM 7的InvokeDynamic字节代码的性能方面将会大大受益,而且Scala可能会受益于尾recursion(不确定是否会出现在JVM 8或更高版本中)。 还有什么其他的改变,Scala能够从JVM中受益? 这些变化是否在地平线上? 具体来说,是否有更改的JVM,将提高性能与闭包和函数作为对象?

重新启动elasticsearch节点

在elasticsearch中重新启动节点的正确方法是什么? (最好通过REST API,java API也可以)

“启动Scala解释器时拾取JAVA_TOOL_OPTIONS:-javaagent:/usr/share/java/jayatanaag.jar”

在Ubuntu 14.04中运行Scala解释器时,第一行显示以下消息: Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar 接下来是熟悉的“欢迎来到Scala”的消息。 我很担心,因为在之前运行Scala的时候我还没有看到 – 这是什么意思,是危险的,等等? 显然环境variables$JAVA_TOOL_OPTIONS设置为-javaagent:/usr/share/java/jayatanaag.jar – 我没有设置,但是做了什么,为什么? 我可以安全地取消它吗? 附加信息: 最近安装了Android Studio JAR名称中的“ayatana”一词可能指向Ubuntu的Ayatana项目

Scala Koans中的===(triple-equals)运算符是什么?

我开始按照Scala Koans的方式工作,这个Scala Koans围绕着一套unit testing进行组织,这些unit testing需要填写空白(这个想法是在一个类似的Ruby Koans项目之后build模的)。你启动运行一个testing的sbt工具,它告诫: [info] + ***************************************** [info] + [info] + [info] + [info] +请仔细阅读套件“AboutEmptyValues”的koan“None equals None” [info] + [info] + [info] + [info] + ***************************************** …所以你去看看这个unit testing,它说: testing(“None等于无”){ 断言(无=== __) } …冥想后,你意识到你应该填写这样的空白: testing(“None等于无”){ 断言(无===无) } …然后移动到下一个unit testing。 我的问题是,这个===运算符是什么? 我似乎无法在任何地方find它。 这是在Scala Koans项目中定义的DSL运营商吗? 还是它是ScalaTest框架的一部分? 或者在斯卡拉适当?

在斯卡拉Akka,感叹号和问号

发送信息给演员时,感叹号( ! )和问号( ? )有什么区别? myActor ! new hello(value1) myActor ? new hello(value1)

有没有办法扩展一个对象?

在scala中,我们不能扩展object : object X object Y extends X 给出错误error: not found: type X 在我的情况下,有人已经定义了一些对象的function,我需要扩展它(基本上添加另一种方法)。 什么是最简单的方法来扩展这个对象?