Tag: 斯卡拉

在Intellij IDEA Scala插件中是否有可能知道应用了哪种隐式转换?

当应用隐式转换时,IntelliJ强调转换的代码。 是否有可能以某种方式导航到应用的转换?

在Scala中的filter,地图,flatMap期间如何轻松地将一个集合types转换为另一个集合types?

假设我有一个List[Int] ,并且我想在每个元素上调用toString ,并将结果作为Vector[String] 。 斯卡拉有什么不同的方式来做到这一点? 是否有一个解决scheme与最小量的显式打字? – 即,我想指定我想要一个Vector而不是一个List ,但我想从过滤函数推断String参数。 还是应该显式传递一个CanBuildFrom实例? 我从哪里得到这些 – 对于Seq s, Set s和Map s?

什么因素可以决定Clojure,Scala还是Haskell会获得牵引力?

鉴于不可能看到未来,与Clojure,Scala或Haskell相关的因素有可能决定它们中的一个是否能够实现? 是否有文化或经济问题可以使这些语言中的一种优于其他语言? 还是这些语言中的任何一个都不可能因为概念的复杂性而获得牵引力呢?

如何防止java.lang.OutOfMemoryError:PermGen空间?

我经常从SBT得到一个OutOfMemoryError 。 > test [error] java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: PermGen space [error] Use 'last' for the full log. > last [debug] Running task… Cancelable: false, check cycles: false [debug] [debug] Initial source changes: [debug] removed:Set() [debug] added: Set() [debug] modified: Set() [debug] Removed products: Set() [debug] Modified external sources: Set() [debug] Modified binary dependencies: Set() [debug] Initial […]

如何在Play Framework和Scala中使用IntelliJ

我正在尝试使用IntelliJ与播放框架2.11应用程序。 我安装了Play Framework 2插件和IntelliJ的Scala插件。 我创build了一个Play应用程序。 我一直在努力编写和IntelliJ中运行Specs 2testing。 我的运行configuration说运行Specs 2testing时先运行“make”,但看起来不像我的testing类正在生成。 不停地告诉我,它找不到规格。 当我查看文件系统时,目标/testing类中没有代码,目录是空的。 此外,至less与运行Play控制台相比,这似乎需要很长时间才能完成构build。 我想看看人们如何使用与IntelliJ玩Play。 你只是使用IntelliJ作为编辑器,并通过播放控制台运行的一切? 有没有一种方法可以在IntelliJ中运行应用程序testing(让testing类运行)? 我从来没有任何问题运行的Play控制台和运行〜testing只testing= xxx.Spec。 它通常是相当快的。 当我尝试运行我的Specs2testing时,下面是我在IntelliJ中遇到的exception: Exception in thread "main" java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.jetbrains.plugins.scala.testingSupport.specs2.JavaSpecs2Runner.runSingleTest(JavaSpecs2Runner.java:130) at org.jetbrains.plugins.scala.testingSupport.specs2.JavaSpecs2Runner.main(JavaSpecs2Runner.java:76) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) Caused by: java.lang.RuntimeException: can not create specification: […]

如何谈论伴侣对象与常规对象?

我是第一次教Scala,我的学生们发现在伴侣对象中涉及的故意的“双关”非常混乱。 考虑下面的例子: class Stack { … methods such as push/pop } object Stack { … factory method(s) and possibly others } 当我使用诸如“堆栈对象”或“堆栈对象”或尤其是“堆栈对象”的语言短语时,会出现混淆。 我的学生很难理解我的意思是单个对象Stack还是Stack类的对象。 我正在寻找替代方法来expression这样的东西,初学者可以更容易地理解。 我一直认为Stack类的对象是“Stack实例”或“Stack的实例”,但是当试图教OO不能调用这些东西的时候,这似乎很疯狂。 在讨论单例对象Stack时,我一直试图总是使用“singleton object”或“companion object”这个短语,但是Scala的语法在这里与我一起工作,因为它只使用单词“object”。 在这种情况下,我可以重命名单个对象StackFactory而不是Stack,但这只是我自己的类的一个选项,而不是已经内置在Scala中的一千个和一个伴随对象。 编辑: 对不起,我的问题还不够清楚。 引用伴侣对象时不会发生主要的混淆。 在这种情况下,正如几个人所指出的那样,使用诸如“同伴对象”这样的短语是很容易的。 相反,当涉及到普通情况时会出现主要的混淆。 然后,如果我说“一个堆栈对象”(意思是一些堆栈实例)或“堆栈对象”(意思是这个特定的实例),一部分学生会认为我的意思是伴侣对象 – 即使我没有使用单词伴侣或单身人士。 而且我可以很好地看到混淆来自何处,因为单词“对象”只出现在伴随对象的程序文本中 。

将元素添加到列表中在Scala中

我正在运行Scala 2.10.2。 我想创build一个列表,然后添加一些元素到列表中,当我调用列表的名字时,期望看到列表中的所有元素。 但是我观察到一些很奇怪的东西(至less对我来说是怪异的,因为我是一个新手)。 以下是我在sbt console试图做的sbt console scala> val l = 1.0 :: 5.5 :: Nil l: List[Double] = List(1.0, 5.5) scala> l res0: List[Double] = List(1.0, 5.5) scala> l ::: List(2.2, 3.7) res1: List[Double] = List(1.0, 5.5, 2.2, 3.7) scala> List(l) :+ 2.2 res2: List[Any] = List(List(1.0, 5.5), 2.2) scala> l res3: List[Double] = […]

斯卡拉作为新的Java?

我在空闲时间开始探索Scala。 我不得不说,到目前为止,我印象非常深刻。 Scala位于JVM之上,与现有的Java代码无缝集成,并具有Java不支持的许多function。 除了学习一门新的语言之外,切换到Scala还有什么缺点?

究竟是什么让选项在斯卡拉monad?

我知道monads是什么以及如何使用它们。 我不明白的是,让我们说, Option一个monad? 在Haskell中,一个monad Maybe是一个monad,因为它是从Monad类实例化的(至less有两个必要的函数return并bind ,使得Monad类实际上是一个monad)。 但在斯卡拉我们有这样的: sealed abstract class Option[+A] extends Product with Serializable { … } trait Product extends Any with Equals { … } 没有关系到monad。 如果我在Scala中创build自己的类,默认情况下会是monad吗? 为什么不?

为什么单例对象更面向对象?

在Scala编程:一个全面的分步指南 ,作者说: Scala比Java更面向对象的一种方式是Scala中的类不能有静态成员。 相反,斯卡拉有单身的对象。 为什么单例对象更面向对象? 什么是不使用静态成员,但单身人士的对象?