當前位置: 首頁>>技術問答>>正文


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/zh-tw/article/1551.html,未經允許,請勿轉載。