คำถามติดแท็ก scala

Scala เป็นภาษาการเขียนโปรแกรมที่ใช้งานทั่วไปโดยมีเป้าหมายหลักที่ Java Virtual Machine ออกแบบมาเพื่อแสดงรูปแบบการเขียนโปรแกรมทั่วไปในรูปแบบที่กระชับสง่างามและปลอดภัยในการใช้งาน คุณสมบัติที่สำคัญของมันคือ: ระบบประเภทคงที่ขั้นสูงที่มีการอนุมานประเภท; ประเภทฟังก์ชั่น รูปแบบจับคู่; พารามิเตอร์และการแปลงโดยนัย ผู้ประกอบการมากไป; การทำงานร่วมกันอย่างสมบูรณ์กับ Java; เห็นพ้องด้วย


5
Scala tuple แกะกล่อง
ฉันรู้ว่าคำถามนี้เกิดขึ้นหลายครั้งในรูปแบบต่างๆ แต่มันก็ยังไม่ชัดเจนสำหรับฉัน มีวิธีที่จะบรรลุดังต่อไปนี้ def foo(a:Int, b:Int) = {} foo(a,b) //right way to invoke foo foo(getParams) // is there a way to get this working without explicitly unpacking the tuple?? def getParams = { //Some calculations (a,b) //where a & b are Int }

26
แพ็คเกจ Maven ใช้งานได้ แต่บิวด์ของ Intellij ล้มเหลว
ฉันมีโครงการ JDK 1.7 ที่มีการพึ่งพา maven กับ jar ในพื้นที่ในที่เก็บ maven ของฉัน ฉันไม่สามารถสร้างโปรเจ็กต์โดยใช้ Intellij โดยมีข้อผิดพลาดที่ไม่พบสัญลักษณ์ (สัญลักษณ์คือคลาสที่นำเข้าแพ็กเกจจาก jar ในเครื่อง) แต่ฉันสามารถสร้างโครงการได้สำเร็จโดยใช้ 'แพ็คเกจ mvn' ฉันใช้เวลามากมายในการค้นหาวิธีแก้ปัญหาสิ่งที่ฉันได้ทำไปแล้ว: แคชไม่ถูกต้อง 'mvn clean install' การพึ่งพา jar ในเครื่อง ทำเครื่องหมายเป็น 'autoload snapshots' ในการกำหนดค่า maven ของ Intellij Reimpoted maven ใน Intellij ซิงค์ ข้อผิดพลาดนี้เกิดขึ้นกับสองสามครั้งก่อนหน้านี้ แต่โดยปกติแล้วเพียงแค่ปิด Intellij และ / หรือทำการ 'mvn clean install' ก็เป็นเคล็ดลับ กรุณาช่วย.

3
เหตุใดชุดที่ไม่เปลี่ยนรูปของ Scala จึงไม่เหมือนกันในประเภทของมัน?
แก้ไข : เขียนคำถามนี้ใหม่ตามคำตอบเดิม scala.collection.immutable.Setชั้นไม่ได้ covariant ในพารามิเตอร์ชนิดของมัน ทำไมถึงเป็นแบบนี้? 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 เราสามารถใช้อย่างน้อยสองวิธีในการติดตั้งประเภทที่มีอยู่หรือแบบใหม่ สมมติว่าเราต้องการแสดงว่าบางสิ่งสามารถหาปริมาณได้โดยใช้Int. เราสามารถกำหนดลักษณะต่อไปนี้ การแปลงโดยนัย trait Quantifiable{ def quantify: Int } จากนั้นเราสามารถใช้การแปลงโดยนัยเพื่อหาจำนวนเช่น Strings and Lists 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 …

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] …

5
Ternary Operator คล้ายกับ?:
ฉันพยายามหลีกเลี่ยงโครงสร้างเช่นนี้: val result = this.getClass.getSimpleName if (result.endsWith("$")) result.init else result ตกลงในตัวอย่างนี้thenและelseสาขาเป็นเรื่องง่าย แต่คุณสามารถสร้างภาพที่ซับซ้อนได้ ฉันสร้างสิ่งต่อไปนี้: object TernaryOp { class Ternary[T](t: T) { def is[R](bte: BranchThenElse[T,R]) = if (bte.branch(t)) bte.then(t) else bte.elze(t) } class Branch[T](branch: T => Boolean) { def ?[R] (then: T => R) = new BranchThen(branch,then) } class BranchThen[T,R](val branch: T …
94 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ไม่ได้ทั้งสองประเภทที่แตกต่างกัน? เราควรใช้ a 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() …

4
ตัวอย่างการใช้งานสำหรับตัวอักษรสัญลักษณ์ใน Scala มีอะไรบ้าง
การใช้ตัวอักษรสัญลักษณ์ยังไม่ชัดเจนในทันทีจากสิ่งที่ฉันได้อ่านเกี่ยวกับ Scala ใครสนใจที่จะแบ่งปันการใช้งานในโลกแห่งความเป็นจริงบ้าง? มีสำนวน Java เฉพาะที่ครอบคลุมโดยตัวอักษรสัญลักษณ์หรือไม่? ภาษาใดมีโครงสร้างคล้ายกัน ฉันมาจากพื้นหลัง Python และไม่แน่ใจว่ามีอะไรที่คล้ายคลึงกันในภาษานั้น อะไรเป็นแรงจูงใจให้ฉันใช้ "HelloWorld กับ" HelloWorld " ขอบคุณ
93 syntax  scala 

16
จุดประกาย - ข้อผิดพลาด“ ต้องตั้งค่า 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: …

6
การเปลี่ยนชื่อคอลัมน์ของ DataFrame ใน Spark Scala
ฉันกำลังพยายามแปลงชื่อส่วนหัว / คอลัมน์ทั้งหมดของDataFrameใน Spark-Scala ณ ตอนนี้ฉันมาพร้อมกับรหัสต่อไปนี้ซึ่งแทนที่ชื่อคอลัมน์เดียวเท่านั้น for( i <- 0 to origCols.length - 1) { df.withColumnRenamed( df.columns(i), df.columns(i).toLowerCase ); }

3
ฉันจะใช้รูปแบบการเพิ่มคุณค่า - ห้องสมุดของฉันกับคอลเลกชัน Scala ได้อย่างไร
หนึ่งในรูปแบบที่มีประสิทธิภาพมากที่สุดที่มีอยู่ในสกาลาเป็นประเทือง-ห้องสมุดของฉันรูปแบบ * ซึ่งใช้แปลงโดยปริยายที่จะปรากฏขึ้นเพื่อเพิ่มวิธีการเรียนที่มีอยู่โดยไม่ต้องมีความละเอียดวิธีการแบบไดนามิก ตัวอย่างเช่นหากเราต้องการให้สตริงทั้งหมดมีวิธีการ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 …

1
HowTo: ฟิลด์ที่กำหนดเองใน Lift-Record-Squeryl
ฉันกำลังพยายามสร้างEnumListFieldใน Lift / Record / Squeryl คล้ายกับMappedEnumListในLiftMapper. ประเภทการจัดเก็บควรเป็นแบบยาว / ใหญ่ ฉันเข้าใจว่าถ้าฉันกำหนด: def classOfPersistentField = classOf[Long] จากนั้น Squeryl จะรู้ว่าควรสร้างคอลัมน์ BIGINT และฉันรู้ว่ามันใช้setFromAny()ในการกำหนดค่าโดยส่งผ่าน Long ชิ้นเดียวที่ฉันไม่ได้รับคือ: มันจะอ่านค่าของฟิลด์อย่างไร? ถ้ามันใช้valueBoxมันจะได้ a Seq[Enum#Value]และมันจะไม่รู้ว่าจะเปลี่ยนมันเป็น Long ได้อย่างไร ฉันจะบอกให้ Squeryl แปลงของฉันSeq[Enum#Value]เป็น Long ได้อย่างไรหรือกำหนด "getter" ที่คืนค่า Long และไม่ขัดแย้งกับ getter "normal"
92 scala  lift  record  squeryl 

30
ตัวแก้ไขไม่มีประเภทหลัก
เพิ่งดูโค้ด Scala ตัวอย่างบนเว็บไซต์ Scala แต่พบข้อผิดพลาดที่น่ารำคาญเมื่อพยายามเรียกใช้ นี่คือรหัส: http://www.scala-lang.org/node/45 http://www.scala-lang.org/node/45เมื่อเรียกใช้บน Eclipse ฉันได้รับข้อความนี้ 'Editor ไม่มีประเภทหลัก' ที่ป้องกันไม่ให้ทำงาน มีอะไรที่ฉันต้องทำ ... เช่นแบ่งไฟล์นั้นออกเป็นหลาย ๆ ไฟล์หรืออะไร?
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 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.