Questions tagged «scala»

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

12
在Scala中使用索引进行有效的迭代
由于Scala没有for带有索引的旧Java样式循环, // does not work val xs = Array("first", "second", "third") for (i=0; i<xs.length; i++) { println("String #" + i + " is " + xs(i)) } 如何在不使用var的情况下有效地进行迭代? 你可以这样做 val xs = Array("first", "second", "third") val indexed = xs zipWithIndex for (x <- indexed) println("String #" + x._2 + " …
83 scala  iteration 

2
多项目中的SBT测试依赖项:使测试代码可用于依赖项目
我有一个SBT多项目,其中一些项目相互依赖。像这样: lazy val coreProject: Project = Project( id = "core-project", base = file("./core-project"), // other stuff )) lazy val extensions: Project = Project( id = "extensions", base = file("./extensions"), dependencies = Seq(coreProject) ) 现在,我在测试文件夹的“核心”项目中有了一些测试代码。还有诸如模拟和测试实用程序之类的东西。现在,我想在扩展的测试中使用这些测试实用程序。对于生产代码,这是可行的,因为我已经声明了依赖项。但是,似乎对测试不依赖。当我运行测试时,我收到缺少类的编译错误。这些类来自核心项目中的测试代码。 我如何告诉sbt依赖项还应包括测试范围的测试代码?这样我就可以在“扩展”项目的测试代码中重用我的模拟游戏?
83 scala  testing  sbt 

6
Scala:将字符串优雅地转换为布尔值
在Java中,您可以编写Boolean.valueOf(myString)。但是在Scala中,java.lang.Boolean隐藏了scala.Boolean缺少此功能的功能。切换到使用原始Java版本的布尔值很容易,但这似乎并不正确。 那么,Scala中用于true从字符串中提取的单行规范解决方案是什么?
83 scala 

8
如何将-D参数或环境变量传递给Spark作业?
我想在开发/生产环境中更改Spark作业的Typesafe配置。在我看来,完成此任务的最简单方法就是-Dconfig.resource=ENVNAME胜任这份工作。然后Typesafe配置库将为我完成这项工作。 有没有办法将该选项直接传递给工作?还是有更好的方法在运行时更改作业配置? 编辑: 当我--conf "spark.executor.extraJavaOptions=-Dconfig.resource=dev"向spark-submit命令添加选项时,什么也没有发生。 Error: Unrecognized option '-Dconfig.resource=dev'.当我传递-Dconfig.resource=dev到spark-submit命令时,我得到了。

8
关于性能和Java互操作性:Clojure与Scala
我已经读过Clojure vs. Scala的各种论述,而我意识到两者都有自己的位置。关于将Clojure与Scala进行比较时,有一些注意事项尚未得到完整的解释: 1.)两种语言中哪一种通常更快?我意识到这从一种语言功能到另一种语言功能都会有所不同,但是对性能进行总体评估会有所帮助。例如:我知道Python字典的速度非常快。但作为一个整体,它是一个多比Java慢语。我不想和Clojure一起去解决这个问题。 2.)与Java的互操作性如何?到目前为止,我所读到的只是Scala具有本机集合类型,使其与大型Java代码库集成有点笨拙,而Clojure遵循一种简单的以Iterable / Iterator为中心的方式与Java类进行互操作。还有其他想法/细节吗? 最终,如果Clojure和Scala之间的距离足够近,我可能会同时尝试它们。关于Clojure的一件事是该语言看起来非常简单。但是话又说回来,Scala具有非常灵活的类型系统。但是,我知道Scala速度很快(基于多个个人帐户)。因此,如果Clojure的速度明显慢一些:我想早点知道。

2
如何使用SBT和IntelliJ IDEA管理多个相互依赖的模块?
我正在开发几个相互依赖的模块,并希望在一个IDEA项目中一起使用它们。我正在使用sbt-idea从sbt构建定义中生成IDEA项目,这对于单个项目非常有用。但是,在多模块的情况下,到目前为止,我已经尝试了一些事情: 使用sbt-idea分别为每个模块生成一个IDEA .iml文件;然后从头开始创建一个主IDEA项目,并向其中添加这些模块。这使得模块来源所有可编辑在同一窗口,但它们之间的依赖关系是不被跟踪(因此从内某些源试图导航FOO项目,在一些酒吧带我到的进口库版本吧,而不是本地资源)。 使用sbt多项目构建(又称子项目),其中父项目的Build.scala包含以下内容: lazy val foo = Project(id = "foo", base = file("foo")) lazy val bar = Project(id = "bar", base = file("bar")) dependsOn(foo) 这几乎可以正常工作,因为sbt-idea生成一个主IDEA项目,并跟踪子项目之间的依赖关系。但是,有两个警告: 子项目必须位于主项目的子目录中(即file("../foo")不允许)是sbt的限制。这不是我真正想要的(如果在两个不同的主项目中使用模块(例如“ utils”或“ commons”包),该怎么办?)但我可以接受。 我的一个子项目有自己的子项目。我不确定sbt本身是否正确处理了这些嵌套项目,但是无论如何它们都被sbt-idea忽略。显然,我需要将嵌套子项目递归地包含在主项目中。 总结一下:我想将可能已经有子项目的模块收集到一个具有跟踪依赖项的大型IDEA项目中,以方便进行编辑。我该怎么做?谢谢!

2
Scala中::和:::有什么区别
val list1 = List(1,2) val list2 = List(3,4) 然后 list1::list2 returns: List[Any] = List(List(1, 2), 3, 4) list1:::list2 returns: List[Int] = List(1, 2, 3, 4) 我看到这本书写道,使用::时也会产生效果List[Int] = List(1, 2, 3, 4)。我的Scala版本是2.9。
82 scala 

5
Scala currying与部分应用函数
我意识到这里有几个关于什么是currying和部分应用的函数的问题,但是我在问它们有什么不同。作为一个简单的示例,这是一个用于查找偶数的咖喱函数: def filter(xs: List[Int], p: Int => Boolean): List[Int] = if (xs.isEmpty) xs else if (p(xs.head)) xs.head :: filter(xs.tail, p) else filter(xs.tail, p) def modN(n: Int)(x: Int) = ((x % n) == 0) 因此,您可以编写以下代码来使用它: val nums = List(1,2,3,4,5,6,7,8) println(filter(nums, modN(2)) 返回:List(2,4,6,8)。但是我发现我可以这样做: def modN(n: Int, x: Int) = ((x % n) …

5
从字符串Scala的末尾删除字符
在Scala中从字符串末尾删除最后一个字符的最简单方法是什么? 我发现Rubys String类具有一些非常有用的方法,例如chop。我本该在Scala中使用“ oddoneoutz” .headOption,但已过时。我不想陷入过于复杂的境地: string.slice(0, string.length - 1) 请有人告诉我,有一个很好的简单方法,例如砍掉这种常见的东西。
82 string  scala 

3
HashPartitioner如何工作?
我阅读了有关的文档HashPartitioner。不幸的是,除了API调用外,没有太多解释。我假设HashPartitioner基于键的哈希对分布式集进行分区。例如,如果我的数据是 (1,1), (1,2), (1,3), (2,1), (2,2), (2,3) 因此,分区程序会将其放入不同的分区中,而相同的密钥位于同一分区中。但是我不明白构造函数参数的重要性 new HashPartitoner(numPartitions) //What does numPartitions do? 对于上述数据集,如果我这样做,结果将如何不同 new HashPartitoner(1) new HashPartitoner(2) new HashPartitoner(10) 那么HashPartitioner实际上如何工作?




3
如何迭代Scala地图?
我有scala地图: attrs: Map[String , String] 当我尝试遍历地图时; attrs.foreach { key, value => } 以上不起作用。在每次迭代中,我必须知道什么是键,什么是值。使用scala语法糖在scala映射上进行迭代的正确方法是什么?
81 scala 

4
Scala中的多个参数列表和每个列表的多个参数之间有什么区别?
在Scala中,可以这样编写(咖喱?)函数 def curriedFunc(arg1: Int) (arg2: String) = { ... } 上面的curriedFunc带有两个参数列表的函数定义与单个参数列表中具有多个参数的函数之间的区别是什么: def curriedFunc(arg1: Int, arg2: String) = { ... } 从数学的角度来看,这是(curriedFunc(x))(y),curriedFunc(x,y)但我可以写def sum(x) (y) = x + y,同样是def sum2(x, y) = x + y 我只知道一个区别-这是部分应用的功能。但是这两种方式对我来说都是等效的。 还有其他区别吗?

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.