Questions tagged «scala»

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

3
为什么Scala的不可变集的类型不协变?
编辑:根据原始答案改写了这个问题 该scala.collection.immutable.Set班是不是在它的类型参数不变性。为什么是这样? import scala.collection.immutable._ def foo(s: Set[CharSequence]): Unit = { println(s) } def bar(): Unit = { val s: Set[String] = Set("Hello", "World"); foo(s); //DOES NOT COMPILE, regardless of whether type is declared //explicitly in the val s declaration }

3
Scala中的符号文字有哪些示例用例?
从我在Scala上阅读的内容来看,符号文字的使用尚无法立即弄清楚。有人愿意分享一些现实世界的用途吗? 符号文字涵盖了特定的Java习惯用法吗?哪些语言具有类似的构造?我来自Python背景,不确定该语言是否有类似之处。 是什么促使我使用'HelloWorld vs“ HelloWorld”? 谢谢
93 syntax  scala 


1
scala.concurrent.Promise的用例是什么?
我正在阅读SIP-14,其概念Future非常合理且易于理解。但是有两个问题Promise: SIP说Depending on the implementation, it may be the case that p.future == p。怎么会这样?是Future与Promise不是两种不同类型的? 我们Promise什么时候应该使用?示例producer and consumer代码: import scala.concurrent.{ future, promise } val p = promise[T] val f = p.future val producer = future { val r = produceSomething() p success r continueDoingSomethingUnrelated() } val consumer = future { startDoingSomething() …

3
隐式转换与类型类
在Scala中,我们可以至少使用两种方法来改造现有或新类型。假设我们要表示可以使用来量化某些内容Int。我们可以定义以下特征。 隐式转换 trait Quantifiable{ def quantify: Int } 然后我们可以使用隐式转换来量化例如字符串和列表。 implicit def string2quant(s: String) = new Quantifiable{ def quantify = s.size } implicit def list2quantifiable[A](l: List[A]) = new Quantifiable{ val quantify = l.size } 导入这些之后,我们可以quantify在字符串和列表上调用该方法。请注意,可量化列表存储其长度,因此避免了后续调用时列表的昂贵遍历quantify。 类型类别 另一种方法是定义一个“见证” Quantified[A],声明A可以对某种类型进行量化。 trait Quantified[A] { def quantify(a: A): Int } 然后,我们提供这种类型的类的实例String和List地方。 implicit val stringQuantifiable = …

14
Spark-提交应用程序时出现错误“必须在您的配置中设置主URL”
我有一个Spark应用程序,它在本地模式下运行没有问题,但是在提交到Spark集群时遇到了一些问题。 错误消息如下: 16/06/24 15:42:06 WARN scheduler.TaskSetManager: Lost task 2.0 in stage 0.0 (TID 2, cluster-node-02): java.lang.ExceptionInInitializerError at GroupEvolutionES$$anonfun$6.apply(GroupEvolutionES.scala:579) at GroupEvolutionES$$anonfun$6.apply(GroupEvolutionES.scala:579) at scala.collection.Iterator$$anon$14.hasNext(Iterator.scala:390) at org.apache.spark.util.Utils$.getIteratorSize(Utils.scala:1595) at org.apache.spark.rdd.RDD$$anonfun$count$1.apply(RDD.scala:1157) at org.apache.spark.rdd.RDD$$anonfun$count$1.apply(RDD.scala:1157) at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:1858) at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:1858) at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:66) at org.apache.spark.scheduler.Task.run(Task.scala:89) at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:214) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) Caused by: org.apache.spark.SparkException: A master URL …



3
这三种在Scala中定义函数的方式之间的差异
给出了三种表达相同功能的方式f(a) := a + 1: val f1 = (a:Int) => a + 1 def f2 = (a:Int) => a + 1 def f3:(Int => Int) = a => a + 1 这些定义有何不同?REPL没有显示任何明显的差异: scala> f1 res38: (Int) => Int = <function1> scala> f2 res39: (Int) => Int = <function1> scala> f3 …
92 scala 

3
如何将“丰富我的图书馆”模式应用于Scala集合?
Scala中可用的最强大的模式之一是rich-my-library *模式,它使用隐式转换来显示将方法添加到现有类中,而无需动态方法解析。例如,如果我们希望所有字符串都具有spaces计算它们拥有多少空白字符的方法,我们可以: class SpaceCounter(s: String) { def spaces = s.count(_.isWhitespace) } implicit def string_counts_spaces(s: String) = new SpaceCounter(s) scala> "How many spaces do I have?".spaces res1: Int = 5 不幸的是,这种模式在处理通用集合时会遇到麻烦。例如,有人问了一些有关按集合顺序对项目进行分组的问题。没有内置的功能可以一次性完成,因此这似乎是使用通用集合C和通用元素类型的“丰富我的图书馆”模式的理想选择A: class SequentiallyGroupingCollection[A, C[A] <: Seq[A]](ca: C[A]) { def groupIdentical: C[C[A]] = { if (ca.isEmpty) C.empty[C[A]] else { val first = …

1
如何:Lift-Record-Squeryl中的自定义字段
我正在尝试EnumListField在Lift / Record / Squeryl中创建一个,类似于MappedEnumList中LiftMapper。存储类型应为Long / BIGINT。我了解,如果我定义: def classOfPersistentField = classOf[Long] 然后,Squeryl将知道它应该创建一个BIGINT列。而且我知道它用于setFromAny()设置值,传入Long。我没有得到的一件是: 它将如何读取该字段的值?如果使用valueBox,它将得到一个Seq[Enum#Value],并且不知道如何将其转换为Long。 如何告诉Squeryl将我转换Seq[Enum#Value]为Long或定义一个返回Long且与“正常” getter不冲突的“ getter”?
92 scala  lift  record  squeryl 

10
我可以在Scala中将两个以上的列表一起压缩吗?
给出以下Scala列表: val l = List(List("a1", "b1", "c1"), List("a2", "b2", "c2"), List("a3", "b3", "c3")) 我怎样才能得到: List(("a1", "a2", "a3"), ("b1", "b2", "b3"), ("c1", "c2", "c3")) 由于zip只能用于合并两个列表,因此我认为您需要以某种方式迭代/减少主列表。毫不奇怪,以下方法不起作用: scala> l reduceLeft ((a, b) => a zip b) <console>:6: error: type mismatch; found : List[(String, String)] required: List[String] l reduceLeft ((a, b) => a zip …

30
编辑器不包含主类型
只是浏览了Scala网站上的示例Scala代码,但是在尝试运行它时遇到了一个令人讨厌的错误。 这是代码:http : //www.scala-lang.org/node/45。在Eclipse上运行它时,出现此消息“编辑器不包含主类型”,该消息阻止其运行。 我有什么需要做的...将那个文件分成多个文件,或者什么?
92 eclipse  scala 

4
包对象
什么是包对象,而不是概念,而是它们的用法? 我试图使示例工作,而我上班的唯一形式如下: package object investigations { val PackageObjectVal = "A package object val" } package investigations { object PackageObjectTest { def main(args: Array[String]) { println("Referencing a package object val: " + PackageObjectVal) } } } 我到目前为止所做的观察是: package object _root_ { ... } 被禁止(这是合理的), package object x.y { ... } 也不允许。 …
92 scala  scala-2.8 


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.