Tag: 斯卡拉

我如何从Scala内部获得Scala版本?

这不是关于命令行编译器选项的。 我如何以编程方式获得代码内的Scala版本? 或者,Eclipse Scala插件v2在哪里存储scalac的path?

如何用Scala做一个实例检查(Test)

我试图将ScalaTest整合到我的Java项目中,用ScalaTestsreplace所有的JUnittesting。 有一次,我想检查Guice的注射器是否注入了正确的types。 在Java中,我有这样的testing: 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) val house = […]

如何在Scala中将文件读取为字节数组

我可以find大量的例子,但他们似乎主要依赖Java库或只读字符/行/等。 我只是想读一些文件,并与scala库获得一个字节数组 – 有人可以帮我吗?

如何为sbt设置堆大小?

我正在使用SBT 0.12.0。 我已经阅读了堆栈溢出的其他答案,并遵循他们,但是没有一个帮助,例如: 创buildForkRun类 – 我在使用sbt期间没有观察到任何分叉进程 设置环境variablesJAVA_OPTS – 它被设置,但sbt的进程命令行似乎并没有使用它。 sbt -J-Xmx2G将参数附加到sbt进程命令行,但是旧值-Xmx1536m由sbt使用,而不是附加参数。 我错过了什么吗? 在进行testing和run时,如何为sbt 0.12设置堆大小?

意想不到的types与简单的老分类

上个星期我的一个朋友提出了一个看似无害的Scala语言问题,我没有很好的答案:是否有一种简单的方法来声明属于某种常见types类的东西的集合。 当然在Scala中没有“types类”的一stream概念,所以我们必须从特征和上下文边界(即含义)的angular度来思考这个概念。 具体来说,给定表示typestypes的一些特征T[_]以及范围为T[A] , T[B]和T[C]相应含义的typesA , B和C ,我们想要声明类似List[T[a] forAll { type a }] ,我们可以将A , B和C实例逍遥法外。 这在斯卡拉当然不存在; 去年的一个问题更深入地讨论了这个问题 。 自然的后续问题是“Haskell怎么做?” 那么,GHC特别是有一个types系统扩展称为Impandicative多态性 ,在“Boxytypes”论文中描述。 简而言之,给定一个typesT可以合法地构build一个列表[forall a. T a => a] [forall a. T a => a] 。 给定这种forms的声明,编译器会做一些字典传递的魔法,让我们在运行时保留对应于列表中每个值types的types实例。 事情是,“字典传递魔法”听起来很像“vtables”。 在像Scala这样的面向对象语言中,子types比“Boxytypes”方法更简单,更自然。 如果我们的A , B和C都扩展特性T ,那么我们可以简单地声明List[T]并且感到高兴。 同样,正如Miles在下面的评论中所指出的那样,如果它们都扩展了T1 , T2和T3特征,那么我可以使用List[T1 with T2 with T3]作为Haskell的等价物[forall a. (T1 a, T2 a, T3 […]

你如何从构build+使用simple-build-tool发布的工件中删除_ <scala-version>后缀?

我正在使用简单的构build工具来构build一些Java-only项目。 当我使用sbt publish-local发布项目中的工件时,生成的工件将Scala版本附加到他们的名字上。 对于Scala项目来说,这是有道理的,但是由于这些只是Java项目,所以没有。 我将如何禁用Scala版本的这个后缀? 或者我可以吗? 作为参考,我使用sbt 0.11.1,Scala 2.9.1和一个.sbt文件进行构buildconfiguration(尽pipe转移到完整的项目configuration将是没有问题的)。

案例类在Scala中映射

有谁知道是否有一个很好的方式,我可以转换一个Scala案例类实例,例如 case class MyClass(param1: String, param2: String) val x = MyClass("hello", "world") 进入某种映射,例如 getCCParams(x) returns "param1" -> "hi", "param2" -> "3" 哪些适用于任何案例类,而不仅仅是预定义类。 我发现你可以通过编写一个询问底层产品类的方法,例如, def getCCName(caseobj: Product) = caseobj.productPrefix getCCName(x) returns "MyClass" 所以我正在寻找类似的解决scheme,但案例类字段。 我可以想象一个解决scheme可能需要使用Javareflection,但是如果case类的底层实现发生变化,我不愿意写一些可能会在未来的Scala版本中破坏的东西。 目前我正在Scala服务器上工作,并使用案例类定义协议及其所有消息和exception,因为它们是如此美丽,简洁的构造。 但是,我需要将它们翻译成Java映射,以便通过消息传递层为任何客户端实现使用。 我目前的实现只是分别为每个案例类定义一个翻译,但是find一个通用的解决scheme将是很好的。

Scala中的=>和()=>是什么意思

我是新来的斯卡拉,我真的很喜欢它,但有时它让我感到惊讶。 例如: clickedCallbacks: List[() => Unit]) 任何人都可以告诉我什么=>和() =>在斯卡拉的意思?

在iOS上使用Avian的Scala

有一个称为Avian的相对较新的轻量级JVM,可以为iOS目标生成可执行文件。 网站上没有太多的文档(用Googlesearch的内容也不多)。 我想知道是否有人知道如何使用Avian在iOS上运行一个基本的Scala程序一步一步的教程。

Scala集合如何从map操作中返回正确的集合types?

注意:这是一个常见问题,具体询问我可以自己回答,因为这个问题似乎经常出现,我想把它放在一个可以通过search轻松find的地方 正如我在这里回答评论的提示 例如: "abcde" map {_.toUpperCase} //returns a String "abcde" map {_.toInt} // returns an IndexedSeq[Int] BitSet(1,2,3,4) map {2*} // returns a BitSet BitSet(1,2,3,4) map {_.toString} // returns a Set[String] 在scaladoc中,所有这些都使用从TraversableLikeinheritance的map操作,那么如何才能始终返回最具体的有效集合呢? 即使是通过隐式转换提供map String 。