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

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

11
จะระบุขนาดฮีพสูงสุดของ JVM“ -Xmx” สำหรับเรียกใช้แอปพลิเคชันที่มีการดำเนินการ“ รัน” ใน SBT ได้อย่างไร
แอปพลิเคชันของฉันทำการประมวลผลอาร์เรย์ข้อมูลขนาดใหญ่และต้องการหน่วยความจำมากกว่าที่ JVM มอบให้ตามค่าเริ่มต้น ฉันรู้ว่าใน Java ระบุโดยตัวเลือก "-Xmx" ฉันจะตั้งค่า SBT ให้ใช้ค่า "-Xmx" เฉพาะเพื่อเรียกใช้แอปพลิเคชันด้วยการดำเนินการ "รัน" ได้อย่างไร
98 scala  sbt 

9
การเขียนโปรแกรมเชิงฟังก์ชัน - ความไม่เปลี่ยนรูปมีราคาแพงหรือไม่? [ปิด]
ตามที่กล่าวมาในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา คำถามเป็นสองส่วน ประการแรกคือแนวความคิด ต่อไปจะดูคำถามเดียวกันอย่างเป็นรูปธรรมมากขึ้นใน Scala การใช้เฉพาะโครงสร้างข้อมูลที่ไม่เปลี่ยนรูปในภาษาโปรแกรมทำให้การใช้อัลกอริทึม / ลอจิกบางอย่างมีราคาแพงกว่าในทางปฏิบัติหรือไม่? สิ่งนี้นำมาสู่ความจริงที่ว่าการไม่เปลี่ยนรูปเป็นหลักการสำคัญของภาษาที่ใช้งานได้อย่างหมดจด มีปัจจัยอื่น ๆ ที่ส่งผลกระทบนี้หรือไม่? ลองมาเป็นตัวอย่างที่เป็นรูปธรรมมากขึ้น โดยทั่วไปแล้วQuicksortได้รับการสอนและนำไปใช้โดยใช้การดำเนินการที่ไม่แน่นอนบนโครงสร้างข้อมูลในหน่วยความจำ เราจะนำสิ่งดังกล่าวไปใช้อย่างไรในรูปแบบการทำงานที่บริสุทธิ์โดยมีค่าใช้จ่ายในการคำนวณและพื้นที่จัดเก็บที่เทียบเคียงกับเวอร์ชันที่เปลี่ยนแปลง โดยเฉพาะใน Scala ฉันได้รวมเกณฑ์มาตรฐานคร่าวๆไว้ด้านล่าง รายละเอียดเพิ่มเติม: ฉันมาจากพื้นฐานการเขียนโปรแกรมที่จำเป็น (C ++, Java) ฉันได้สำรวจการเขียนโปรแกรมเชิงฟังก์ชันโดยเฉพาะ Scala หลักการหลักบางประการของการเขียนโปรแกรมเชิงฟังก์ชัน: หน้าที่เป็นพลเมืองชั้นหนึ่ง ฟังก์ชั่นไม่ได้มีผลข้างเคียงและด้วยเหตุนี้วัตถุโครงสร้างข้อมูล / มีไม่เปลี่ยนรูป แม้ว่าJVMสมัยใหม่จะมีประสิทธิภาพอย่างมากในการสร้างวัตถุและการรวบรวมขยะมีราคาไม่แพงมากสำหรับวัตถุที่มีอายุสั้น แต่ก็ยังดีกว่าที่จะลดการสร้างวัตถุใช่ไหม อย่างน้อยที่สุดในแอปพลิเคชันเธรดเดียวที่การทำงานพร้อมกันและการล็อกไม่ใช่ปัญหา เนื่องจาก Scala เป็นกระบวนทัศน์แบบไฮบริดเราจึงสามารถเลือกที่จะเขียนโค้ดที่จำเป็นกับวัตถุที่เปลี่ยนแปลงได้หากจำเป็น แต่ในฐานะคนที่ใช้เวลาหลายปีในการพยายามใช้วัตถุซ้ำและลดการจัดสรรให้น้อยที่สุด ฉันต้องการความเข้าใจที่ดีเกี่ยวกับโรงเรียนแห่งความคิดที่ไม่ยอมให้เป็นเช่นนั้น ในกรณีที่เฉพาะเจาะจงฉันรู้สึกประหลาดใจเล็กน้อยกับข้อมูลโค้ดในบทช่วยสอน 6นี้ มี Quicksort เวอร์ชัน …

3
คำอธิบายประกอบ Scala คืออะไรเพื่อให้แน่ใจว่าฟังก์ชันการเรียกซ้ำหางได้รับการปรับให้เหมาะสม
ฉันคิดว่ามี@tailrecคำอธิบายประกอบเพื่อให้แน่ใจว่าคอมไพเลอร์จะปรับแต่งฟังก์ชันหางซ้ำให้เหมาะสม คุณเอาไว้หน้าใบประกาศหรือไม่? ยังใช้งานได้หรือไม่หากใช้ Scala ในโหมดสคริปต์ (เช่นใช้:load <file>ภายใต้ REPL)

3
หลักการตั้งชื่อสำหรับค่าคงที่ของ Scala?
หลักการตั้งชื่อสำหรับค่าคงที่ของ Scala คืออะไร? การค้นหาสั้น ๆ ในคำแนะนำ StackOverflow CamelCase ตัวพิมพ์ใหญ่ (บรรทัดแรกด้านล่าง) แต่ฉันต้องการตรวจสอบอีกครั้ง val ThisIsAConstant = 1.23 val THIS_IS_ANOTHER_CONSTANT = 1.55 val thisIsAThirdConstant = 1.94 สไตล์สกาล่าแบบไหนที่แนะนำ

1
type Dynamic ทำงานอย่างไรและจะใช้งานอย่างไร?
ฉันได้ยินมาว่าDynamicมันเป็นไปได้ที่จะพิมพ์แบบไดนามิกใน Scala แต่ฉันนึกไม่ออกว่ามันจะเป็นยังไงหรือมันทำงานอย่างไร ฉันพบว่าใคร ๆ ก็สามารถสืบทอดจากลักษณะ Dynamic class DynImpl extends Dynamic APIบอกว่าหนึ่งสามารถใช้มันเช่นนี้ foo.method ("blah") ~~> foo.applyDynamic ("วิธีการ") ("blah") แต่เมื่อลองใช้แล้วไม่ได้ผล: scala> (new DynImpl).method("blah") <console>:17: error: value applyDynamic is not a member of DynImpl error after rewriting to new DynImpl().<applyDynamic: error>("method") possible cause: maybe a wrong Dynamic method signature? (new DynImpl).method("blah") ^ …
98 scala 

3
วิธีรวบรวมการทดสอบด้วย SBT โดยไม่ต้องเรียกใช้
มีวิธีสร้างการทดสอบด้วย SBT โดยไม่เรียกใช้หรือไม่? กรณีการใช้งานของฉันเองคือการเรียกใช้การวิเคราะห์แบบคงที่ในรหัสทดสอบโดยใช้ปลั๊กอินสเกแลค อีกกรณีการใช้งานที่เป็นไปได้คือการรันโค้ดทดสอบบางส่วนหรือทั้งหมดโดยใช้รันเนอร์ที่แยกจากกันที่สร้างขึ้นใน SBT ตามหลักการแล้วจะมีวิธีแก้ปัญหานี้ที่ใช้กับโครงการ SBT ใด ๆ ตัวอย่างเช่น Maven มีคำสั่งทดสอบคอมไพล์ที่สามารถใช้เพื่อรวบรวมการทดสอบโดยไม่ต้องรัน มันจะดีมากถ้า SBT มีสิ่งเดียวกัน อุดมคติน้อยกว่า แต่ก็ยังมีประโยชน์มากคือโซลูชันที่เกี่ยวข้องกับการแก้ไขไฟล์บิลด์ของโครงการ
97 scala  sbt  build-tools 

3
วิธีที่ถูกต้องในการรับ subarray ใน Scala คืออะไร?
ฉันกำลังพยายามหา subarray ใน scala และฉันสับสนเล็กน้อยว่าวิธีที่เหมาะสมในการทำคืออะไร สิ่งที่ฉันต้องการมากที่สุดคือสิ่งที่คุณสามารถทำได้ใน python: x = [3, 2, 1] x[0:2] แต่ฉันค่อนข้างมั่นใจว่าคุณไม่สามารถทำได้ วิธีที่ชัดเจนที่สุดคือการใช้ไลบรารียูทิลิตี้ Java Arrays import java.util.Arrays val start = Array(1, 2, 3) Arrays.copyOfRange(start, 0, 2) แต่มันทำให้ฉันรู้สึกสกปรกเล็กน้อยที่ใช้ไลบรารี Java ใน Scala วิธีที่ "scalaic" มากที่สุดที่ฉันพบจะเป็น def main(args: List[String]) { val start = Array(1, 2, 3) arrayCopy(start, 0, 2) } def …

4
ความแตกต่างระหว่าง Reduce และ foldLeft / fold ในการเขียนโปรแกรมเชิงฟังก์ชัน (โดยเฉพาะ Scala และ Scala APIs)
ทำไม Scala และเฟรมเวิร์กเช่น Spark และ Scalding จึงมีทั้งสองอย่างreduceและfoldLeft? แล้วอะไรคือความแตกต่างระหว่างreduceและfold?

9
การสร้างวัตถุขนาดใหญ่ที่ไม่เปลี่ยนรูปโดยไม่ใช้ตัวสร้างที่มีรายการพารามิเตอร์ยาว ๆ
ฉันมีวัตถุขนาดใหญ่ (มากกว่า 3 ช่อง) ที่สามารถและไม่เปลี่ยนรูปได้ ทุกครั้งที่ฉันเจอกรณีนั้นฉันมักจะสร้างสิ่งที่น่ารังเกียจของตัวสร้างที่มีรายการพารามิเตอร์ยาว ๆ รู้สึกไม่ถูกต้องใช้ยากและความสามารถในการอ่านไม่เพียงพอ จะยิ่งแย่ไปกว่านั้นถ้าฟิลด์นั้นเป็นประเภทคอลเลกชันบางประเภทเช่นรายการ วิธีง่ายๆaddSibling(S s)จะทำให้การสร้างวัตถุง่ายขึ้นมาก แต่ทำให้วัตถุไม่แน่นอน พวกคุณใช้อะไรในกรณีเช่นนี้? ฉันใช้ Scala และ Java แต่ฉันคิดว่าปัญหาคือภาษาไม่เชื่อเรื่องพระเจ้าตราบใดที่ภาษานั้นมุ่งเน้นไปที่วัตถุ วิธีแก้ปัญหาที่ฉันคิดได้: "สิ่งที่น่ารังเกียจของตัวสร้างที่มีรายการพารามิเตอร์ยาว" รูปแบบตัวสร้าง
96 java  oop  scala  immutability 


3
คำหลัก "ใหม่" ใน Scala
ฉันมีคำถามง่ายๆ - เราควรใช้คีย์เวิร์ดใหม่เมื่อสร้างอ็อบเจกต์ใน Scala เมื่อใด เมื่อเราพยายามสร้างอินสแตนซ์วัตถุ Java เท่านั้นหรือไม่?

6
“ นามธรรมทับ” หมายความว่าอย่างไร
บ่อยครั้งในวรรณคดี Scala ฉันพบวลี "นามธรรมมากกว่า" แต่ฉันไม่เข้าใจเจตนา ตัวอย่างเช่น Martin Odersky เขียน คุณสามารถส่งเมธอด (หรือ "ฟังก์ชั่น") เป็นพารามิเตอร์หรือคุณสามารถสรุปทับได้ คุณสามารถระบุประเภทเป็นพารามิเตอร์หรือคุณสามารถสรุปทับได้ ดังตัวอย่างอื่นในกระดาษ"Deprecating the Observer Pattern" ผลที่ตามมาจากกระแสเหตุการณ์ของเราเป็นค่านิยมชั้นหนึ่งคือเราสามารถสรุปเหนือสิ่งเหล่านี้ได้ ฉันได้อ่านชื่อสามัญลำดับแรก "นามธรรมเหนือประเภท" ในขณะที่ monads "abstract over type constructors" และเรายังเห็นวลีเช่นนี้ในกระดาษแบบเค้ก หากต้องการอ้างอิงหนึ่งในหลายตัวอย่างดังกล่าว: สมาชิกประเภทบทคัดย่อให้วิธีที่ยืดหยุ่นในการทำนามธรรมกับส่วนประกอบประเภทคอนกรีต แม้แต่คำถามเกี่ยวกับสแต็กล้นที่เกี่ยวข้องก็ใช้คำศัพท์นี้ "ไม่สามารถเป็นนามธรรมที่มีอยู่จริงเหนือประเภทที่กำหนดพารามิเตอร์ ... " แล้ว ... "นามธรรมทับ" ที่จริงหมายความว่าอย่างไร?

8
การใช้งานของ Null / Nothing / Unit ใน Scala
ฉันเพิ่งอ่าน: http://oldfashionedsoftware.com/2008/08/20/a-post-about-nothing/ เท่าที่ผมเข้าใจคือลักษณะและเพียงตัวอย่างของมันคือNullnull เมื่อเมธอดใช้อาร์กิวเมนต์ Null เราสามารถส่งต่อได้เฉพาะการNullอ้างอิงหรือnullโดยตรง แต่ไม่สามารถอ้างอิงอื่น ๆ ได้แม้ว่าจะเป็นโมฆะก็ตาม ( nullString: String = nullเช่น) ฉันแค่สงสัยว่าในกรณีNullใดบ้างที่ใช้ลักษณะนี้จะมีประโยชน์ นอกจากนี้ยังมีลักษณะ Nothing ที่ฉันไม่เห็นตัวอย่างอีกต่อไป ฉันไม่เข้าใจจริงๆว่าความแตกต่างระหว่างการใช้ Nothing และ Unit เป็นประเภทการส่งคืนคืออะไรเนื่องจากทั้งสองไม่ส่งคืนผลลัพธ์ใด ๆ จะทราบได้อย่างไรว่าจะใช้วิธีใดเมื่อฉันมีวิธีการที่ดำเนินการบันทึก คุณมีการใช้งานของ Unit / Null / Nothing เป็นอย่างอื่นนอกเหนือจากประเภทผลตอบแทนหรือไม่
95 scala 


18
ตัวอย่างโค้ด Scala และ Java ที่โค้ด Scala ดูง่ายกว่า / มีจำนวนบรรทัดน้อยกว่า?
ฉันต้องการตัวอย่างโค้ด (และฉันก็อยากรู้เกี่ยวกับพวกเขาด้วย) ของโค้ด Scala และ Java ซึ่งแสดงให้เห็นว่าโค้ด Scala นั้นเรียบง่ายและรัดกุมกว่าโค้ดที่เขียนด้วย Java (แน่นอนว่าทั้งสองตัวอย่างควรแก้ปัญหาเดียวกัน) หากมีเพียงตัวอย่าง Scala ที่มีความคิดเห็นเช่น "นี่คือโรงงานนามธรรมใน Scala ใน Java มันจะดูยุ่งยากกว่านี้" ก็ยอมรับเช่นกัน ขอบคุณ! ฉันชอบคำตอบที่ได้รับการยอมรับและคำตอบนี้มากที่สุด

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