当前位置: 首页>>技术问答>>正文


Scala编程常见问题整理【一】

编者按: 本文从stackoverflow收集了Scala编程中的常见问题。基于google/baidu/bing翻译将问题议成了中文,希望在英语表达不地道(特别是中英文夹杂)的情况下,也能检索到优质内容入口。     Scala相关问题非常多,我们会陆续将这些问题做成专辑,分成多篇文章分别展现。本文是其中的第一篇内容。 注: 点击问题标题直达英文原版网站,点击 加速访问 ,可以通过本站加速器快速访问。


1. 如何在Scala上解决类型擦除?或者,为什么我不能获取我的集合的类型参数?[Scala] (How do I get around type erasure on Scala? Or, why can’t I get the type parameter of my collections?)

type-erasure

这是Scala的一个悲哀的事实,如果你实例化List [Int],你可以验证你的实例是一个列表,你可以验证它的任何单个元素是一个Int,但不是它是一个。 。

2. Scala在哪里寻找implicits?[Scala] (Where does Scala look for implicits?)

implicit-conversion,implicits

对Scala的新人来说,一个隐含的问题似乎是:编译器在哪里查找implicits?我的意思是隐含的,因为这个问题似乎没有完全形成,好像没有词语…

3. Scala中方法和函数之间的区别[Scala] (Difference between method and function in Scala)

functionmethods

我读了Scala函数(Scala的另一个旅游的一部分)。在那篇文章中他说:方法和功能是不一样的事情,但他没有解释任何东西。他想说什么?

4. Scala中下划线的所有用途是什么?[Scala] (What are all the uses of an underscore in Scala?)

scala

我看看在scala-lang.org上进行的调查的列表,并注意到一个好奇的问题:“你能指出所有的用途吗?你可以吗?如果是,请在这里: – )解释性的例子是…

5. Scala 2.8 breakOut[Scala] (Scala 2.8 breakOut)

scala-2.8,scala-collections

在Scala 2.8中,在scala.collection.package.scala中有一个对象:def breakOut [From,T,To](implicit b:CanBuildFrom [Nothing,T,To])= new CanBuildFrom [From,T,To] def apply(from:…)

6. 什么是Scala上下文和视图边界?[Scala] (What are Scala context and view bounds?)

implicits

以简单的方式,什么是上下文和视图边界,它们之间的区别是什么?一些容易跟随的例子也将是伟大的!

7. Scala:什么是TypeTag,我如何使用它?[Scala] (Scala: What is a TypeTag and how do I use it?)

types,scala-2.10,reification

所有我知道的TypeTag是,他们不知何故替换清单。在互联网上的信息是稀缺的,不提供我有一个很好的感觉的主题。我会很高兴,如果有人分享…

8. 为什么不编译示例,又是(协同,对照和内部)方差如何工作?[Scala] (Why doesn’t the example compile, aka how does (co-, contra-, and in-) variance work?)

genericscovariance,contravariance

从这个问题,可以有人解释下面在Scala中:class Slot [+ T](var some:T){//不是COMPILE //“COVARIANT参数在CONTRAVARIANT位置”}我…

9. 什么是Scala的产量?[Scala] (What is Scala’s yield?)

functional-programming,yield

我理解Ruby和Python的产量。 Scala的收益是什么?

10. self-types和trait子类有什么区别?[Scala] (What is the difference between self-types and trait subclasses?)

traits,self-type

一个自我类型的性状A:trait Btrait A {this:B =>}说“A不能混合到一个具体的类,不会扩展B”。另一方面,以下:trait Btrait A。 … ..

11. `:_ *`(冒号下划线明星)在Scala中做什么?[Scala] (What does `:_*` (colon underscore star) do in Scala?)

pattern-matching

我有这样一段代码从这个问题:def addChild(n:Node,newChild:Node)= n match {case Elem(prefix,label,attribs,scope,child @ _ *)=> Elem attribs,scope,…

12. 任务不可序列化:java.io.NotSerializableException在调用函数outside closure时仅对类不是对象[Scala] (Task not serializable: java.io.NotSerializableException when calling function outside closure only on classes not objects)

serialization,apache-spark,typesafe

在调用闭包外的函数时获取奇怪的行为:当函数在对象中时,函数在类中处于工作状态get:Task not serializable:java.io ….

13. 在Scala 2.8中,<:<,<%<和=:=是什么意思,它们在哪里记录?[Scala] (What do <:<, <%<, and =:= mean in Scala 2.8, and where are they documented?)

scala-2.8

我可以在Predef的API文档中看到它们是一个通用函数类型(From)=> To的子类,但这就是说。嗯,什么?也许有文档在某个地方,但搜索引擎不…

14. Case对象与Scala中的枚举[Scala] (Case objects vs Enumerations in Scala)

enumeration,case-class

有没有关于何时使用案例类(或案例对象)与扩展Enumeration在Scala的最佳实践指南?他们似乎提供一些相同的好处。

15. 通过键Spark写入多个输出 – 一个Spark作业[Scala] (Write to multiple outputs by key Spark – one Spark job)

hadoop,output,hdfs,apache-spark

如何在单个作业中使用Spark写入依赖于键的多个输出。我当然可以使用.filter所有可能的键,但这是一个可怕的黑客,这将启动许多…

16. 如何定义“类型拆分”(联合类型)?[Scala] (How to define “type disjunction” (union types)?)

scala

建议处理重载方法的double定义的一种方法是用模式匹配替换重载:object Bar {def foo(xs:Any *)= xs foreach {case _:…

17. 在括号和括号之间的Scala的正式区别是什么,它们应该在什么时候使用?[Scala] (What is the formal difference in Scala between braces and parentheses, and when should they be used?)

syntax,parentheses,braces

在括号()和括号{}中传递参数到函数之间的形式上的区别是什么?我从Scala书中的编程中得到的感觉是Scala非常灵活,

18. =>,()=>和Unit =>之间有什么区别[Scala] (What’s the difference between => , ()=>, and Unit=>)

scala

我试图表示一个没有参数并且不返回任何值的函数(我在JavaScript中模拟setTimeout函数,如果你必须知道的话)case class Scheduled(time:Int,callback:= …

19. JVM是否阻止尾调用优化?[Scala] (Does the JVM prevent tail call optimizations?)

java,jvmtail-recursion

我看到这个问题的报价:什么是一个良好的功能语言,在其上构建一个Web服务? Scala特别不支持尾调用消除,除了自递归函数,…

20. 什么是Scala中的“上下文绑定”?[Scala] (What is a “context bound” in Scala?)

scala-2.8,context-bound

Scala 2.8的一个新功能是上下文边界。什么是上下文绑定,它在哪里是有用的?当然,我搜索第一(找到例如这个),但我找不到任何真正清楚…

21. Scala 2.8集合库是“历史上最长的自杀笔记”的案例吗? [关闭][Scala] (Is the Scala 2.8 collections library a case of “the longest suicide note in history”? [closed])

scala-2.8,scala-collections

我刚刚开始看看Scala集合库重新实现,这是即将到来的2.8版本。那些熟悉2.7库的图书馆会注意到图书馆,从…

22. 清除更新嵌套结构的方法[Scala] (Cleaner way to update nested structures)

case-class,zipper

说明我有以下两个case类:case类地址(街道:字符串,城市:字符串,状态:字符串,zipCode:Int)case类Person(firstName:String,lastName:String,address:Address)and …

23. 什么是什么精确的规则,当你可以省略括号,点,大括号,=(函数)等等?[Scala] (What are the precise rules for when you can omit parenthesis, dots, braces, = (functions), etc.?)

syntax

什么是什么精确的规则,当你可以省略(省略)括号,点,大括号,=(函数)等。例如,(service.findAllPresentations.get.first.votes.size)必须是等于(2)。服务…

24. 最好的方式合并两个地图和总和相同的键的值?[Scala] (Best way to merge two maps and sum the values of same key?)

map,merge

val map1 = Map(1 – > 9,2 – > 20)val map2 = Map(1-> 100,3-> 300)我想合并它们,并且对相同键的值求和。所以结果将是:地图(2-> 20,1-> 109,3-> 300)现在…

25. 什么是Scala中的类型lambdas,他们的好处是什么?[Scala] (What are type lambdas in Scala and what are their benefits?)

types

有时,我绊倒到def f [T](..)= new T [({类型l [A] = SomeType [A,..]})的半神秘符号)#1] {..}在Scala博客帖子,它给它一个“我们使用类型lambda的技巧”handwave ….

26. 我如何链接隐含在Scala?[Scala] (How can I chain implicits in Scala?)

implicit-conversion,implicits

pimp-my-library模式允许我通过提供从该类到实现该方法的隐式转换来向类添加一个方法.Scala不允许两个这样的方法。

27. 强制类型差异[Scala] (Enforce type difference)

types

在Scala中,我可以在编译时强制执行类型相等。例如:case类Foo [A,B](a:A,b:B)(隐式ev:A =:= B)scala> Foo(1,2)res3:Foo [Int,Int] = Foo ,2)scala> Foo(1,“2”…

28. 如何在数据集中存储自定义对象?[Scala] (How to store custom objects in a Dataset?)

apache-spark,apache-spark-dataset

根据介绍Spark数据集:我们期待Spark 2.0,我们计划对数据集的一些令人振奋的改进,具体来说:…自定义编码器 – 虽然我们目前自动生成…

29. Scala的隐藏功能[Scala] (Hidden features of Scala)

hidden-features

每个Scala开发人员应该注意什么Scala的隐藏功能?每个答案一个隐藏的功能。

30. 在Scala中通过名称调用和值调用,需要澄清[Scala] (Call by name vs call by value in Scala, clarification needed)

scala

正如我所理解的,在Scala中,一个函数可以被称为-by-value或by-name-例如,给定下面的声明,我们知道函数如何被调用。声明:def f(x:…

31. 如何在Scala中使用java.String.format?[Scala] (How to use java.String.format in Scala?)

java,stringformat

我试图使用.format方法的字符串。但是如果我把%1,%2等放在字符串中,java.util.UnknownFormatConversionException抛出指向一个混乱的Java源代码片:…

32. 如何将enrich-my-library模式应用于Scala集合?[Scala] (How do I apply the enrich-my-library pattern to Scala collections?)

collections,enrich-my-library

Scala中最强大的模式之一是enrich-my-library *模式,它使用隐式转换来向现有类添加方法,而不需要动态方法…

33. 为什么Scala的不可变集类型不是协变的?[Scala] (Why is Scala’s immutable Set not covariant in its type?)

set,covariance,scala-collections

编辑:基于原始答案重写了这个问题scala.collection.immutable.Set类的类型参数不是协变的。为什么是这样? import scala.collection.immutable._def foo(s:…

34. Scala:抽象类型与泛型[Scala] (Scala: Abstract types vs generics)

genericsabstract-type

我正在阅读Scala旅游:抽象类型。什么时候最好使用抽象类型?例如,抽象类Buffer {type T val element:T},而不是泛型,例如abstract …

35. 什么是Scala中的清单,什么时候需要它?[Scala] (What is a Manifest in Scala and when do you need it?)

manifest

从Scala 2.7.2有一些名为Manifest这是Java的类型擦除的解决方法。但是Manifest如何工作,为什么/你什么时候需要使用它?博客文章Manifests:…

36. 如何写入Scala中的文件?[Scala] (How to write to a file in Scala?)

file-io,scala-2.8

对于阅读,有一个有用的抽象来源。如何将文本行写入文本文件?

37. Scala中的方法参数验证,用于理解和单子[Scala] (Method parameters validation in Scala, with for comprehension and monads)

monads,for-comprehension,either

我试图验证无效的方法的参数,但我没有找到解决方案…有人可以告诉我该怎么办?我正在尝试这样的:def buildNormalCategory(user:User,…

38. Scala中的运算符优先级[Scala] (Operator precedence in Scala)

operator-precedence

我喜欢Scala的运算符优先级的建议,但在一些罕见的情况下,未修改的规则可能不方便,因为你在命名方法上有限制。有没有方法来定义另一个规则…

39. 使用复杂类型查询Spark SQL DataFrame[Scala] (Querying Spark SQL DataFrame with complex types)

apache-spark,apache-spark-sql

如何在复杂类型(如maps / arrays?)中查询RDD,例如,当我编写这个测试代码时:case class Test(name:String,map:Map [String,String])val map = Map “ – >”…

40. Scala中更高级的类型是什么?[Scala] (What is a higher kinded type in Scala?)

genericstypes,constructor,higher-kinded-types

你可以在网上找到以下内容:高类型==类型构造函数? class AClass [T] {…} //例如,类List [T]有人说这是一个更高的类型,因为itabstracts over …

41. 在Scala的密封性状迭代?[Scala] (Iteration over a sealed trait in Scala?)

enumeration,scala-macros,sealed

我只想知道是否有可能迭代一个密封的特性在Scala?如果不是,为什么不可能?由于性状是密封的,应该是可能没有?我想做什么是东西…

42. 在Scala中,什么是“早期初始化程序”?[Scala] (In Scala, what is an “early initializer”?)

scala

在Martin Odersky最近发表的关于Scala中程序员能力水平的文章中,他在专家库设计器部分中包含了“早期初始化器”这一术语。

43. SPARK DataFrame:选择每个组的第一行[Scala] (SPARK DataFrame: select the first row of each group)

apache-spark,apache-spark-sql,spark-dataframe

我有一个DataFrame生成如下:df.groupBy($“小时”,$“类别”).agg(sum($“value”)。alias(“TotalValue”)).sort($“小时” $“TotalValue”.desc))结果如下:+ —- + ——– + —-…

44. 数据透视Spark数据框[Scala] (Pivot Spark Dataframe)

apache-spark,pivot,dataframe

我开始使用Spark Dataframes,我需要能够透视数据,以创建多列,多列中的一列。有内置的功能,在Scalding和我…

45. 如何使用Spark DataFrames查询JSON数据列?[Scala] (How to query JSON data column using Spark DataFrames?)

apache-spark,apache-spark-sql,spark-dataframe,spark-cassandra-connector

我有一个Cassandra表为简单看起来像:key:textjsonData:textblobData:blobI可以创建一个基本的数据框架使用spark和spark-cassandra连接器…

46. 在Scala中使用什么JSON库? [关闭][Scala] (What JSON library to use in Scala? [closed])

json

我需要构建一个JSON字符串,像这样:[{‘id’:1,’name’:’John’},{‘id’:2,’name’:’Dani’}] val jArray = JsArray ); jArray + =((“id”,“1”),(“name”,“John”))

47. 在Scala中JavaConverters和JavaConversions有什么区别?[Scala] (What is the difference between JavaConverters and JavaConversions in Scala?)

scala-collections,scala-java-interop

在scala.collection中,有两个非常相似的对象JavaConversions和JavaConverters。这两个对象有什么区别?为什么它们都存在?我什么时候要使用一个…

48. 在Scala中var和val定义之间有什么区别?[Scala] (What is the difference between a var and val definition in Scala?)

scala

Scala中的var和val定义之间有什么区别,为什么语言需要这两者?为什么你会选择一个val超过var,反之亦然?

49. Scala上的类型不匹配以进行理解[Scala] (Type Mismatch on Scala For Comprehension)

for-loop,type-mismatch,for-comprehension,scala-option

为什么这个结构导致Scala中的类型不匹配错误?(第一< – Some(1);第二< – List(1,2,3))yield(第一,第二)<console>:6:error: ;发现:列表[(…

50. 使用.toSet设置类型推理失败?[Scala] (Type inference fails on Set made with .toSet?)

type-inference

为什么类型推理失败在这里? scala> val xs = List(1,2,3,3)xs:List [Int] = List(1,2,3,3)scala> xs.toSet map(_ * 2)<console>:9:error :缺少扩展的参数类型…

本文由《纯净天空》出品。文章地址: https://vimsky.com/article/1551.html,未经允许,请勿转载。