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

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

18
ห้องสมุดคอลเลกชัน Scala 2.8 เป็นกรณีของ "บันทึกการฆ่าตัวตายที่ยาวที่สุดในประวัติศาสตร์" หรือไม่? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันเพิ่งเริ่มดูที่การนำคอลเลคชั่นห้องสมุดสกาล่ากลับมาใช้ใหม่ซึ่งกำลังจะวางตลาดในรุ่น2.8 ที่ใกล้เข้ามา ผู้ที่คุ้นเคยกับห้องสมุดจาก 2.7 จะสังเกตเห็นว่าห้องสมุดจากมุมมองการใช้งานมีการเปลี่ยนแปลงเล็กน้อย ตัวอย่างเช่น... > List("Paris", "London").map(_.length) res0: List[Int] List(5, 6) ... สามารถใช้งานได้ทั้งสองรุ่น ห้องสมุดใช้ประโยชน์ได้อย่างเด่นชัดจริงๆแล้วมันยอดเยี่ยมมาก อย่างไรก็ตามผู้ที่ไม่คุ้นเคยกับ Scala ก่อนหน้านี้และได้พูดคุยกับคนอื่นเพื่อทำความเข้าใจกับภาษาในขณะนี้ต้องทำให้ความรู้สึกของลายเซ็นวิธีการเช่น: def map[B, That](f: A => B)(implicit bf: CanBuildFrom[Repr, B, That]): That สำหรับฟังก์ชั่นการใช้งานที่เรียบง่ายนี่เป็นลายเซ็นที่น่ากลัวและเป็นสิ่งที่ฉันคิดว่าตัวเองต้องดิ้นรนที่จะเข้าใจ ไม่ใช่ว่าฉันคิดว่า Scala น่าจะเป็น Java คนต่อไป (หรือ / C / C ++ …

6
Scala vs. Groovy vs. Clojure [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ปิดให้บริการใน6 ปีที่ผ่านมา ล็อคแล้ว คำถามและคำตอบนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ ใครช่วยกรุณาอธิบายความแตกต่างที่สำคัญระหว่าง Scala, Groovy และ Clojure ฉันรู้ว่าคอมไพล์เหล่านี้ทำงานบน JVM แต่ฉันต้องการเปรียบเทียบง่าย ๆ ระหว่างพวกเขา

13
ฟังก์ชั่นเวลามีอยู่ในการตั้งโปรแกรมการทำงานอย่างไร
ฉันต้องยอมรับว่าฉันไม่รู้เกี่ยวกับการเขียนโปรแกรมฟังก์ชั่นมากนัก ฉันอ่านเกี่ยวกับมันจากที่นี่และที่นั่นและได้รู้ว่าในการเขียนโปรแกรมเชิงฟังก์ชันฟังก์ชั่นจะคืนค่าเอาต์พุตเดียวกันสำหรับอินพุตเดียวกันไม่ว่าจะเรียกใช้ฟังก์ชันกี่ครั้งก็ตาม มันเหมือนกับฟังก์ชันทางคณิตศาสตร์ที่ประเมินผลลัพธ์เดียวกันสำหรับค่าเดียวกันของพารามิเตอร์อินพุตที่เกี่ยวข้องในการแสดงออกของฟังก์ชัน ตัวอย่างเช่นพิจารณาสิ่งนี้: f(x,y) = x*x + y; // It is a mathematical function ไม่ว่าคุณจะใช้ไปกี่ครั้งf(10,4)ก็ตามคุณค่าของมันจะยังคงอยู่ตลอด104ไป ดังนั้นทุกที่ที่คุณเขียนf(10,4)คุณสามารถแทนที่ด้วย104โดยไม่ต้องเปลี่ยนค่าของการแสดงออกทั้งหมด คุณสมบัตินี้เรียกว่าการอ้างอิงโปร่งใสของการแสดงออก ตามที่ Wikipedia พูดว่า ( ลิงค์ ) ในทางกลับกันในฟังก์ชั่นรหัสค่าเอาท์พุทของฟังก์ชั่นขึ้นอยู่กับอาร์กิวเมนต์ที่ใส่เข้าไปในฟังก์ชั่นเท่านั้นดังนั้นการเรียกใช้ฟังก์ชัน f สองครั้งด้วยค่าเดียวกันสำหรับอาร์กิวเมนต์ x จะให้ผลลัพธ์ที่เหมือนกัน f (x) ทั้งสองครั้ง ฟังก์ชั่นเวลา (ซึ่งจะคืนค่าเวลาปัจจุบัน ) สามารถมีอยู่ในการตั้งโปรแกรมการทำงานหรือไม่ ถ้าใช่แล้วมันจะมีอยู่ได้อย่างไร? มันไม่ได้ละเมิดหลักการของฟังก์ชั่นการเขียนโปรแกรมหรือไม่? มันละเมิดความโปร่งใสในการอ้างอิงซึ่งเป็นหนึ่งในคุณสมบัติของการเขียนโปรแกรมการทำงาน (ถ้าฉันเข้าใจถูกต้อง) หรือถ้าไม่, แล้วเราจะรู้เวลาปัจจุบันในการโปรแกรมเชิงฟังก์ชันได้อย่างไร?

13
ความแตกต่างระหว่างวัตถุและคลาสใน Scala
ฉันเพิ่งจะไปทำแบบฝึกหัด Scala บนอินเทอร์เน็ตและได้สังเกตในบางตัวอย่างวัตถุจะถูกประกาศในตอนเริ่มต้นของตัวอย่าง ความแตกต่างระหว่างclassและobjectในสกาล่าคืออะไร?
635 scala  class  object 

12
กรณีใช้งานที่ดีสำหรับ Akka [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันได้ยินมามากมายเกี่ยวกับกรอบของAkka (แพลตฟอร์มบริการ Java / Scala) แต่จนถึงตอนนี้ยังไม่เคยเห็นตัวอย่างการใช้งานจริงจำนวนมากที่มันจะดี ดังนั้นฉันจะสนใจที่จะได้ยินเกี่ยวกับสิ่งที่นักพัฒนาใช้มันอย่างประสบความสำเร็จ ข้อ จำกัด เดียวเท่านั้น: โปรดอย่ารวมกรณีของการเขียนเซิร์ฟเวอร์แชท (เพราะอะไรเพราะสิ่งนี้ถูกใช้เป็นตัวอย่างมากเกินไปสำหรับสิ่งที่คล้ายกัน)

7
การใช้ขีดเส้นใต้ในสกาลาคืออะไร
ฉันเอาดูที่รายการของการสำรวจดำเนินการในscala-lang.orgและสังเกตเห็นเป็นคำถามที่อยากรู้อยากเห็น " คุณสามารถตั้งชื่อใช้งานทั้งหมดของ ‘_’? " คุณสามารถ? ถ้าใช่โปรดทำที่นี่ ตัวอย่างคำอธิบายชื่นชม
540 scala 

1
Scalaz iteratees: "Lifting" `EnumeratorT` เพื่อให้ตรงกับ IterateeT สำหรับ monad ที่ใหญ่กว่า
หากฉันมีEnumeratorTและที่เกี่ยวข้องIterateeTฉันสามารถเรียกใช้พวกเขาด้วยกัน: val en: EnumeratorT[String, Task] = EnumeratorT.enumList(List("a", "b", "c")) val it: IterateeT[String, Task, Int] = IterateeT.length (it &= en).run : Task[Int] หากตัวแจงนับเป็น "ใหญ่กว่า" iteratee monad ฉันสามารถใช้upหรือโดยทั่วไปHoistเพื่อ "ยก" iteratee เพื่อให้ตรงกับ: val en: EnumeratorT[String, Task] = ... val it: IterateeT[String, Id, Int] = ... val liftedIt = IterateeT.IterateeTMonadTrans[String].hoist( implicitly[Task |>=| Id]).apply(it) (liftedIt …

16
อะไรคือความแตกต่างระหว่างคลาสเคสของสกาล่ากับคลาส?
ฉันค้นหาใน Google เพื่อค้นหาความแตกต่างระหว่างที่และcase class classทุกคนกล่าวว่าเมื่อคุณต้องการจับคู่รูปแบบในคลาสให้ใช้คลาสเคส มิฉะนั้นใช้คลาสและยังกล่าวถึงสิทธิพิเศษบางอย่างเช่นเท่ากับและรหัสแฮชแทนที่ แต่เหตุผลเหล่านี้เป็นเหตุผลเดียวที่ควรใช้คลาสเคสแทนคลาส? ฉันเดาว่าควรมีเหตุผลที่สำคัญมากสำหรับคุณลักษณะนี้ใน Scala คำอธิบายหรือมีแหล่งข้อมูลเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับคลาสเคสสคาลาคืออะไร?

9
ตัวดำเนินการสัญลักษณ์ของ Scala ทั้งหมดหมายถึงอะไร
ไวยากรณ์สกาล่ามีสัญลักษณ์มากมาย เนื่องจากชื่อประเภทเหล่านี้หาได้ยากโดยใช้เสิร์ชเอ็นจิ้นรายชื่อที่ครอบคลุมจึงมีประโยชน์ สัญลักษณ์ทั้งหมดใน Scala คืออะไรและแต่ละสัญลักษณ์ทำอะไร โดยเฉพาะอย่างยิ่งผมอยากจะรู้เกี่ยวกับ->, ||=, ++=, <=, _._, และ:::+=
402 scala  operators 

2
สกาล่ามองหาการปลูกฝังที่ไหน?
นัยคำถามที่จะมาใหม่เพื่อ Scala น่าจะเป็น: ที่ไม่ดูคอมไพเลอร์สำหรับ implicits? ฉันหมายถึงโดยปริยายเพราะคำถามดูเหมือนจะไม่ได้เกิดขึ้นอย่างสมบูรณ์ราวกับว่าไม่มีคำพูด :-) ตัวอย่างเช่นค่าสำหรับintegralด้านล่างมาจากไหน scala> import scala.math._ import scala.math._ scala> def foo[T](t: T)(implicit integral: Integral[T]) {println(integral)} foo: [T](t: T)(implicit integral: scala.math.Integral[T])Unit scala> foo(0) scala.math.Numeric$IntIsIntegral$@3dbea611 scala> foo(0L) scala.math.Numeric$LongIsIntegral$@48c610af คำถามอีกข้อที่ติดตามผู้ที่ตัดสินใจเรียนรู้คำตอบของคำถามแรกคือผู้แปลเลือกว่าจะใช้แบบไหนโดยปริยายในบางสถานการณ์ที่มีความคลุมเครือชัดเจน ยกตัวอย่างเช่นscala.PredefกำหนดสองแปลงจากString: หนึ่งไปWrappedStringและอื่น ๆ StringOpsเพื่อ ทั้งชั้นเรียน แต่แบ่งปันมากในวิธีการดังนั้นทำไมไม่ Scala บ่นเกี่ยวกับความคลุมเครือเมื่อพูดเรียกmap? หมายเหตุ:คำถามนี้ได้รับแรงบันดาลใจจากคำถามอื่น ๆ นี้โดยหวังว่าจะสามารถระบุปัญหาได้ในลักษณะทั่วไป ตัวอย่างถูกคัดลอกมาจากที่นั่นเพราะมันถูกอ้างถึงในคำตอบ

11
อะไรคือความแตกต่างระหว่างประเภทย่อยของตนเองและลักษณะย่อย?
ประเภทตนเองสำหรับลักษณะA: trait B trait A { this: B => } บอกว่า" Aไม่สามารถผสมลงในระดับที่เป็นรูปธรรมที่ไม่ยังขยายB " ในทางตรงกันข้ามต่อไปนี้: trait B trait A extends B กล่าวว่า"ใด ๆ (ที่เป็นรูปธรรมหรือนามธรรม) ชั้นผสมในAก็จะได้รับการผสมใน B" ข้อความทั้งสองนี้ไม่ได้มีความหมายเหมือนกันหรือไม่ ดูเหมือนว่าประเภทของตัวเองจะให้บริการเพียงเพื่อสร้างความเป็นไปได้ของข้อผิดพลาดในการรวบรวมเวลาที่เรียบง่าย ฉันพลาดอะไรไป
387 scala  traits  self-type 

8
อะไรคือข้อดีของการใช้คลาสนามธรรมแทนลักษณะ?
อะไรคือข้อดีของการใช้คลาสนามธรรมแทนลักษณะ (นอกเหนือจากประสิทธิภาพ) ดูเหมือนว่าคลาสนามธรรมสามารถถูกแทนที่ด้วยลักษณะในกรณีส่วนใหญ่
371 scala  traits 

11
ฉันจะลบประเภทใน Scala ได้อย่างไร หรือเหตุใดฉันจึงไม่สามารถรับพารามิเตอร์ type ของคอลเล็กชันของฉันได้
มันเป็นความจริงที่น่าเศร้าของชีวิตใน Scala ที่ว่าถ้าคุณยกตัวอย่าง List [Int] คุณสามารถตรวจสอบว่าอินสแตนซ์ของคุณเป็น List และคุณสามารถตรวจสอบได้ว่าองค์ประกอบใด ๆ ของมันเป็น Int แต่ไม่ใช่ว่าเป็น List Int] ตามที่สามารถตรวจสอบได้ง่าย: scala> List(1,2,3) match { | case l : List[String] => println("A list of strings?!") | case _ => println("Ok") | } warning: there were unchecked warnings; re-run with -unchecked for details A list of strings?! …

4
การต่อกันรายการสกาล่า, ::: vs ++
มีความแตกต่างระหว่าง:::และ++สำหรับรายการที่ต่อกันใน Scala หรือไม่? scala> List(1,2,3) ++ List(4,5) res0: List[Int] = List(1, 2, 3, 4, 5) scala> List(1,2,3) ::: List(4,5) res1: List[Int] = List(1, 2, 3, 4, 5) scala> res0 == res1 res2: Boolean = true จากเอกสารที่ดูเหมือนว่า++เป็นทั่วไปมากขึ้นในขณะที่:::เป็นList-specific มีให้หลังเพราะมันถูกใช้ในภาษาการทำงานอื่น ๆ ?

1
Scala: TypeTag คืออะไรและฉันจะใช้ได้อย่างไร
สิ่งที่ฉันรู้เกี่ยวกับ TypeTags ก็คือพวกมันเข้ามาแทนที่ Manifests ข้อมูลบนอินเทอร์เน็ตหายากและไม่ได้ให้ความรู้สึกที่ดีกับฉันในเรื่องนี้ ดังนั้นฉันยินดีหากมีคนแบ่งปันลิงก์ไปยังเนื้อหาที่มีประโยชน์บน TypeTags รวมถึงตัวอย่างและกรณีการใช้งานที่เป็นที่นิยม ยินดีต้อนรับคำตอบและคำอธิบายโดยละเอียด

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