Questions tagged «scala»

Scala是主要针对Java虚拟机的通用编程语言。它旨在以简洁,优雅和类型安全的方式表达常见的编程模式,它融合了命令式和功能性编程风格。它的主要特征是:具有类型推断功能的高级静态类型系统;功能类型;模式匹配; 隐式参数和转换;操作符重载;与Java完全互操作性;并发

8
Java编译速度与Scala编译速度
我已经在Scala中编程了一段时间了,我喜欢它,但是令我烦恼的是编译程序所花费的时间。这似乎是一件小事,但是使用Java我可以对程序进行一些小的更改,单击netbeans中的运行按钮,然后BOOM就会运行,随着时间的推移,在scala中进行编译似乎会花费大量时间。我听说在许多大型项目中,脚本编写语言变得非常重要,因为需要花费大量的编译时间,而使用Java时却没有看到这种需求。 但是我来自Java,据我了解,它比任何其他编译语言都快,并且由于我改用Scala的原因而变得更快(这是一种非常简单的语言)。 所以我想问一下,我可以使Scala编译速度更快,并且scalac会和javac一样快。

14
如何在sc.textFile中代替HDFS加载本地文件
我正在关注很棒的Spark教程 所以我试图在46m:00s加载,README.md但是失败了,我正在做的是: $ sudo docker run -i -t -h sandbox sequenceiq/spark:1.1.0 /etc/bootstrap.sh -bash bash-4.1# cd /usr/local/spark-1.1.0-bin-hadoop2.4 bash-4.1# ls README.md README.md bash-4.1# ./bin/spark-shell scala> val f = sc.textFile("README.md") 14/12/04 12:11:14 INFO storage.MemoryStore: ensureFreeSpace(164073) called with curMem=0, maxMem=278302556 14/12/04 12:11:14 INFO storage.MemoryStore: Block broadcast_0 stored as values in memory (estimated size 160.2 …

4
有人可以解释使用SBT的正确方法吗?
我要从衣柜里出来!我不了解SBT。我说过了,现在请帮助我。 条条大路通罗马,那是SBT一样的:要开始SBT有SBT,SBT Launcher,SBT-extras,等,然后有不同的方式,包括和决定库。有没有“最佳”方法? 我问是因为有时候我会迷路。SBT文档非常详尽和完整,但是我发现自己不知道何时使用build.sbtor project/build.properties或project/Build.scalaor project/plugins.sbt。 然后,它变成乐趣,还有就是Scala-IDE和SBT- 什么是使用它们在一起的正确方法?首先是鸡肉还是鸡蛋? 最重要的可能是,如何找到要包含在项目中的正确存储库和版本?我是否只是拉出一个小背包,然后开始破解前进的道路?我经常发现包含所有内容和厨房水槽的项目,然后我意识到-我并不是唯一迷失一点的人。 作为一个简单的例子,现在,我正在启动一个全新的项目。我想用最新的功能SLICK和Scala这很可能需要最新版本的SBT的。入门的理智点是什么,为什么?我应该在哪个文件中定义它,外观如何?我知道我可以解决这个问题,但是我真的很希望专家就一切应该去哪里(为什么要去那里会有奖金)提出专家意见。 我已经在SBT小型项目中使用了一年多了。我曾经使用过SBT,然后SBT Extras(因为它使一些头痛神奇地消失了),但是我不确定为什么要使用一个或另一个。我因不了解事物如何配合(SBT以及存储库)而感到沮丧,并且认为如果可以用人的方式来解释,这将使下一个来此工作的人免于很多麻烦。
100 scala  sbt 

3
匹配Scala中的多个案例类
我正在对某些案例类进行匹配,并希望以相同的方式处理两个案例。像这样: abstract class Foo case class A extends Foo case class B(s:String) extends Foo case class C(s:String) extends Foo def matcher(l: Foo): String = { l match { case A() => "A" case B(sb) | C(sc) => "B" case _ => "default" } } 但是当我这样做时,我得到了错误: (fragment of test.scala):10: error: illegal …

2
为什么“ private val”和“ private final val”不同?
我常想,private val和private final val一样,直到我在斯卡拉参考看到第4.1节: 常量值定义为以下形式 final val x = e 其中e是一个常量表达式(第6.24节)。final修饰符必须存在,并且不能给出类型注释。对常量值x的引用本身被视为常量表达式。在生成的代码中,它们将替换为定义的右侧e。 我写了一个测试: class PrivateVal { private val privateVal = 0 def testPrivateVal = privateVal private final val privateFinalVal = 1 def testPrivateFinalVal = privateFinalVal } javap -c 输出: Compiled from "PrivateVal.scala" public class PrivateVal { public int testPrivateVal(); Code: 0: …
100 scala  private  final 

6
如何使用Scala执行instanceof检查(测试)
我正在尝试将ScalaTest合并到我的Java项目中。用ScalaTests替换所有JUnit测试。一方面,我想检查Guice的Injector是否注入正确的类型。在Java中,我有这样的测试: public class InjectorBehaviour { @Test public void shouldInjectCorrectTypes() { Injector injector = Guice.createInjector(new ModuleImpl()); House house = injector.getInstance(House.class); assertTrue(house.door() instanceof WoodenDoor); assertTrue(house.window() instanceof BambooWindow); assertTrue(house.roof() instanceof SlateRoof); } } 但是我在使用ScalaTest做一个问题: class InjectorSpec extends Spec { describe("An injector") { it("should inject the correct types") { val injector = Guice.createInjector(new ModuleImpl) …
100 java  scala  junit  scalatest 


5
JVM是否阻止尾部调用优化?
我在以下问题上看到了这句话:构建Web服务时应使用哪种良好的功能语言? 除自递归功能外,Scala特别不​​支持尾部调用消除,这限制了您可以执行的组合类型(这是JVM的基本限制)。 这是真的?如果是这样,那么创建此基本限制的JVM是什么?



9
函数式编程-不变性昂贵吗?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 问题分为两部分。首先是概念上的。接下来的内容将在Scala中更具体地研究相同的问题。 在编程语言中仅使用不可变数据结构是否会使在实践中实现某些算法/逻辑本质上在计算上更加昂贵?这引出了一个事实,即不变性是纯功能语言的核心宗旨。还有其他因素对此有影响吗? 让我们举一个更具体的例子。通常对内存数据结构使用可变操作来教授和实现Quicksort。如何以一种PURE功能方式实现这种事情,并且具有与可变版本相当的计算和存储开销。特别是在Scala中。我在下面列出了一些粗略的基准。 更多细节: 我来自命令式编程背景(C ++,Java)。我一直在探索函数式编程,特别是Scala。 纯函数式编程的一些主要原理: 职能是头等公民。 函数没有副作用,因此对象/数据结构是不可变的。 即使现代JVM在创建对象方面非常高效,并且垃圾回收对于短寿命的对象而言非常便宜,但将对象创建最小化可能还是更好的选择吧?至少在并发和锁定不是问题的单线程应用程序中。由于Scala是一种混合范例,因此可以根据需要选择使用可变对象编写命令性代码。但是,作为一个花了很多年尝试重用对象并最小化分配的人。我希望对不允许的思想流派有所了解。 作为一个具体案例,我对本教程 6中的代码片段感到有些惊讶。它有一个Java版本的Quicksort,然后是一个简洁的Scala实现。 这是我对实现进行基准测试的尝试。我尚未进行详细的分析。但是,我的猜测是,Scala版本的速度较慢,因为分配的对象数是线性的(每个递归调用一个)。尾叫优化有没有机会发挥作用?如果我是对的,Scala支持针对自递归调用的尾部调用优化。因此,它应该只是在帮助它。我正在使用Scala 2.8。 Java版本 public class QuickSortJ { public static void sort(int[] xs) { sort(xs, 0, xs.length -1 ); } static void sort(int[] xs, int l, int r) { if (r >= l) return; int pivot = …


10
在Scala中反转地图的优雅方式
当前正在学习Scala,需要反转Map来执行一些反转的value-> key查找。我一直在寻找一种简单的方法来做到这一点,但只想出了: (Map() ++ origMap.map(kvp=>(kvp._2->kvp._1))) 有人有更优雅的方法吗?

3
如何在不运行SBT的情况下编译测试
有没有一种方法可以在不运行SBT的情况下进行构建? 我自己的用例是使用scalac插件对测试代码进行静态分析。另一种可能的用例是,使用与内置在SBT中的运行器不同的运行器来运行部分或全部测试代码。 理想情况下,将有一个适用于任何SBT项目的解决方案。例如,Maven有一个test-compile命令,该命令仅可用于编译测试而无需运行它们。如果SBT有同样的事情,那将是很棒的。 不太理想,但仍然很有帮助的是涉及修改项目构建文件的解决方案。
97 scala  sbt  build-tools 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.