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

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

1
ทำความเข้าใจว่าทำไม Zipper ถึงเป็น Comonad
นี่คือการติดตามคำตอบสำหรับคำถามก่อนหน้าของฉัน สมมติว่าฉันต้อง map แต่ละรายการa:AของList[A]ที่จะb:Bมีฟังก์ชั่นและสร้างdef f(a:A, leftNeighbors:List[A]): BList[B] เห็นได้ชัดว่าฉันไม่สามารถโทรmapเข้ารายการได้ แต่ฉันสามารถใช้ซิปรายชื่อได้ ซิปเป็นเคอร์เซอร์เพื่อเลื่อนไปรอบ ๆ รายการ ให้การเข้าถึงองค์ประกอบปัจจุบัน ( focus) และเพื่อนบ้าน ตอนนี้ฉันสามารถแทนที่ของฉันfด้วย def f'(z:Zipper[A]):B = f(z.focus, z.left)และผ่านฟังก์ชั่นใหม่นี้f'จะใช้วิธีการcobindZipper[A] การcobindทำงานในลักษณะนี้: เรียกสิ่งนั้นf'ด้วยซิปจากนั้นเลื่อนซิปเรียกf'ด้วยซิปใหม่ "ย้าย" เลื่อนซิปอีกครั้งและอื่น ๆ ... จนกระทั่งซิปไปถึงจุดสิ้นสุดของรายการ ในที่สุดการcobindส่งคืนประเภทซิปใหม่Zipper[B]ซึ่งสามารถเปลี่ยนเป็นรายการและเพื่อให้ปัญหาได้รับการแก้ไข ตอนนี้สังเกตความสมมาตรระหว่างcobind[A](f:Zipper[A] => B):Zipper[B]และbind[A](f:A => List[B]):List[B]นั่นคือเหตุผลที่Lista MonadและZipperเป็นComonad. มันเข้าท่าไหม?

9
ส่วนตัว [นี้] กับส่วนตัว
ใน Scala ฉันเห็นคุณสมบัติดังกล่าวเป็นตัวแปรออบเจ็กต์ส่วนตัว จากพื้นหลัง Java ที่ไม่สมบูรณ์ของฉันฉันได้เรียนรู้ที่จะปิดทุกอย่าง (ทำให้เป็นส่วนตัว) และเปิด (ให้ตัวเข้าถึง) หากจำเป็น Scala แนะนำตัวแก้ไขการเข้าถึงที่เข้มงวดยิ่งขึ้น ฉันควรใช้เป็นค่าเริ่มต้นหรือไม่? หรือฉันควรใช้มันเฉพาะในบางกรณีที่ฉันจำเป็นต้อง จำกัด การเปลี่ยนแปลงค่าฟิลด์อย่างชัดเจนแม้กระทั่งสำหรับออบเจ็กต์ในคลาสเดียวกัน ฉันควรเลือกอย่างไรระหว่าง class Dummy { private var name = "default name" } class Dummy { private[this] var name = "default name" } อย่างที่สองเข้มงวดกว่าและฉันชอบ แต่ฉันควรใช้มันเสมอหรือถ้าฉันมีเหตุผลที่ชัดเจน แก้ไข: อย่างที่ฉันเห็นนี่ private[this]เป็นเพียงตัวพิมพ์เล็กบางส่วนและthisฉันสามารถใช้ตัวดัดแปลงอื่น ๆ แทน: "package, class หรือ singleton object" ได้ …
112 scala 

6
จะอ่านไฟล์จากโฟลเดอร์ทรัพยากรใน Scala ได้อย่างไร
ฉันมีโครงสร้างโฟลเดอร์ดังนี้: - main -- java -- resources -- scalaresources --- commandFiles และในโฟลเดอร์นั้นฉันมีไฟล์ที่ต้องอ่าน นี่คือรหัส: def readData(runtype: String, snmphost: String, comstring: String, specificType: String): Unit = { val realOrInvFile = "/commandFiles/snmpcmds." +runtype.trim // these files are under commandFiles folder, which I have to read. try { if (specificType.equalsIgnoreCase("Cisco")) { val specificDeviceFile: String …

3
Scala: วิธีที่ดีที่สุดในการผนวกองค์ประกอบเข้ากับ Array คืออะไร?
บอกว่าฉันArray[Int]ชอบ val array = Array( 1, 2, 3 ) ตอนนี้ฉันต้องการต่อท้ายองค์ประกอบในอาร์เรย์พูดค่า4ดังในตัวอย่างต่อไปนี้: val array2 = array + 4 // will not compile แน่นอนฉันสามารถใช้System.arraycopy()และทำสิ่งนี้ได้ด้วยตัวเอง แต่ต้องมีฟังก์ชั่นไลบรารี Scala สำหรับสิ่งนี้ซึ่งฉันหาไม่พบ ขอบคุณสำหรับคำแนะนำ! หมายเหตุ: ฉันทราบว่าฉันสามารถต่อท้าย Array ขององค์ประกอบอื่นได้เช่นในบรรทัดต่อไปนี้ แต่ดูเหมือนจะกลมเกินไป: val array2b = array ++ Array( 4 ) // this works ฉันตระหนักถึงข้อดีและข้อเสียของ List vs Array และที่นี่ฉันมีเหตุผลหลายประการที่สนใจในการขยาย Array โดยเฉพาะ แก้ไข 1 …
111 arrays  scala  append 

8
เหตุใดการ "แยก" บนสตริงว่างจึงส่งคืนอาร์เรย์ที่ไม่ว่างเปล่า
การแยกสตริงว่างจะส่งกลับอาร์เรย์ขนาด 1: scala> "".split(',') res1: Array[String] = Array("") พิจารณาว่าสิ่งนี้ส่งคืนอาร์เรย์ว่าง: scala> ",,,,".split(',') res2: Array[String] = Array() กรุณาอธิบาย :)
111 java  scala 


5
เปรียบเทียบ sbt และ Gradle [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบได้ด้วยข้อเท็จจริงและการอ้างอิงโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ปรับปรุงคำถามนี้ ฉันกำลังดำน้ำใน Scala และสังเกตเห็น sbt ฉันค่อนข้างพอใจกับ Gradle ในโปรเจ็กต์ java / groovy และฉันรู้ว่ามีปลั๊กอิน scala สำหรับ Gradle อะไรคือเหตุผลที่ดีที่จะชอบ sbt มากกว่า Gradle ในโครงการ Scala
111 scala  sbt  gradle 

3
วิธีการแปลง InputStream เป็น String ใน Scala
ฉันมีฟังก์ชันที่มีประโยชน์ซึ่งฉันเคยใช้ใน Java สำหรับการแปลง InputStream เป็น String นี่คือคำแปลโดยตรงสำหรับ Scala: def inputStreamToString(is: InputStream) = { val rd: BufferedReader = new BufferedReader(new InputStreamReader(is, "UTF-8")) val builder = new StringBuilder() try { var line = rd.readLine while (line != null) { builder.append(line + "\n") line = rd.readLine } } finally { rd.close } builder.toString …

4
จะรับวันสุดท้ายของเดือนใดเดือนหนึ่งกับ JodaTime ได้อย่างไร?
ฉันต้องการวันที่แรก (เป็นorg.joda.time.LocalDate) ของเดือนและวันสุดท้าย การได้รับครั้งแรกเป็นเรื่องเล็กน้อย แต่การได้รับครั้งสุดท้ายดูเหมือนจะต้องใช้เหตุผลบางประการเนื่องจากเดือนมีความยาวต่างกันและความยาวของเดือนกุมภาพันธ์จะแตกต่างกันไปในแต่ละปี มีกลไกสำหรับสิ่งนี้ใน JodaTime อยู่แล้วหรือฉันควรใช้มันด้วยตัวเอง?
110 java  scala  jodatime 

5
นักแสดง Scala: รับและตอบสนอง
ขอบอกก่อนว่าฉันมีประสบการณ์ Java ค่อนข้างมาก แต่เพิ่งเริ่มสนใจภาษาที่ใช้งานได้ไม่นาน เมื่อเร็ว ๆ นี้ฉันได้เริ่มดู Scala ซึ่งดูเหมือนเป็นภาษาที่ดีมาก อย่างไรก็ตามฉันได้อ่านเกี่ยวกับกรอบนักแสดงของ Scala ในProgramming ใน Scalaและมีสิ่งหนึ่งที่ฉันไม่เข้าใจ ในบทที่ 30.4 กล่าวว่าการใช้reactแทนreceiveทำให้สามารถใช้เธรดซ้ำได้ซึ่งดีต่อประสิทธิภาพเนื่องจากเธรดมีราคาแพงใน JVM นี่หมายความว่าตราบใดที่ฉันจำได้ว่าต้องเรียกreactแทนreceiveฉันสามารถเริ่มนักแสดงมากเท่าที่ฉันชอบได้หรือไม่? ก่อนที่จะค้นพบ Scala ฉันเคยเล่นกับ Erlang และผู้เขียนProgramming Erlangภูมิใจนำเสนอเกี่ยวกับการวางไข่กว่า 200,000 กระบวนการโดยไม่ต้องเสียเหงื่อ ฉันไม่อยากทำแบบนั้นกับเธรด Java ฉันกำลังดูข้อ จำกัด ประเภทใดใน Scala เมื่อเทียบกับ Erlang (และ Java) นอกจากนี้เธรดนี้จะใช้ซ้ำใน Scala ได้อย่างไร สมมติเพื่อความง่ายผมมีด้ายเพียงเส้นเดียว นักแสดงทุกคนที่ฉันเริ่มทำงานตามลำดับในเธรดนี้หรือการสลับงานบางอย่างจะเกิดขึ้น? ตัวอย่างเช่นหากฉันเริ่มต้นนักแสดงสองคนที่ส่งข้อความปิงปองถึงกันฉันจะเสี่ยงต่อการชะงักงันหรือไม่หากพวกเขาเริ่มต้นด้วยเธรดเดียวกัน ตามที่การเขียนโปรแกรมใน Scalaเขียนนักแสดงที่จะใช้งานยากกว่าด้วยreact receiveฟังดูมีความเป็นไปได้เนื่องจากreactไม่กลับมา แต่หนังสือเล่มนี้ไปในการแสดงให้เห็นว่าคุณสามารถใส่ภายในห่วงใช้react Actor.loopเป็นผลให้คุณได้รับ loop { …

6
วิธีสำนวนง่ายๆในการกำหนดการสั่งซื้อสำหรับคลาสเคสง่ายๆ
ฉันมีรายการอินสแตนซ์คลาสเคสสกาล่าอย่างง่ายและต้องการพิมพ์ตามลำดับที่คาดเดาได้และเป็นศัพท์โดยใช้list.sortedแต่ได้รับ "ไม่มีการกำหนดลำดับโดยนัยสำหรับ ... " มีนัยที่ให้การเรียงลำดับศัพท์สำหรับคลาสเคสหรือไม่? มีวิธีสำนวนง่ายๆในการผสมการเรียงลำดับศัพท์ในชั้นเรียนหรือไม่? scala> case class A(tag:String, load:Int) scala> val l = List(A("words",50),A("article",2),A("lines",7)) scala> l.sorted.foreach(println) <console>:11: error: No implicit Ordering defined for A. l.sorted.foreach(println) ^ ฉันไม่พอใจกับ 'แฮ็ค': scala> l.map(_.toString).sorted.foreach(println) A(article,2) A(lines,7) A(words,50)

2
ตัวสร้างส่วนตัวและได้รับการป้องกันใน Scala
ฉันอยากรู้เกี่ยวกับผลกระทบของการไม่มีคอนสตรัคเตอร์หลักที่ชัดเจนใน Scala เพียงแค่เนื้อหาของคลาสเท่านั้น โดยเฉพาะอย่างยิ่งฉันสงสัยว่ารูปแบบคอนสตรัคเตอร์ส่วนตัวหรือที่ได้รับการป้องกันนั่นคือการควบคุมการก่อสร้างผ่านอ็อบเจ็กต์ที่แสดงร่วมหรือคลาสหรือวิธีการของอ็อบเจ็กต์อื่นอาจไม่มีการนำไปใช้อย่างชัดเจน ฉันผิดเหรอ? ถ้าเป็นเช่นนั้นจะทำอย่างไร?
109 scala 

4
เหตุผลใดที่ scala ไม่รองรับประเภทที่อ้างอิงอย่างชัดเจน?
มีประเภทที่ขึ้นอยู่กับเส้นทางและฉันคิดว่ามันเป็นไปได้ที่จะแสดงคุณลักษณะเกือบทั้งหมดของภาษาเช่น Epigram หรือ Agda ใน Scala แต่ฉันสงสัยว่าทำไม Scala ไม่สนับสนุนสิ่งนี้อย่างชัดเจนมากขึ้นเหมือนกับที่ทำในด้านอื่น ๆ (พูด , DSLs)? อะไรที่ฉันขาดหายไปเช่น "มันไม่จำเป็น"?

13
เขียนไฟล์ CSV ไฟล์เดียวโดยใช้ spark-csv
ฉันใช้https://github.com/databricks/spark-csvฉันพยายามเขียน CSV เดียว แต่ไม่สามารถทำได้มันกำลังสร้างโฟลเดอร์ ต้องการฟังก์ชัน Scala ซึ่งจะใช้พารามิเตอร์เช่นเส้นทางและชื่อไฟล์และเขียนไฟล์ CSV นั้น

3
build.sbt และ build.scala แตกต่างกันอย่างไร
ฉันเริ่มเรียนรู้ Scala และเกือบทุกบทช่วยสอนฉันเห็นbuild.sbtไฟล์ที่อธิบายการตั้งค่าโครงการ แต่ตอนนี้ฉันได้ติดตั้งgiter8และสร้างโปรเจ็กต์จากเทมเพลตแล้ว และสร้างโปรเจ็กต์จากbuild.sbtไฟล์ที่พลาดเทมเพลตแต่มีbuild.scala(ซึ่งดูเหมือนจะใช้เพื่อวัตถุประสงค์เดียวกัน แต่มีความยืดหยุ่นมากกว่า) แล้วอะไรคือความแตกต่างระหว่างbuild.sbtและbuild.scala? ชอบแบบไหนมากกว่ากันและเพราะอะไร?
107 scala  sbt 

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