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

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

2
เส้นทางการเรียนรู้ที่เหมาะสมที่สุดในการสร้างแอป Android ด้วย Scala คืออะไรโดยไม่ต้องมีประสบการณ์ Java มาก่อน
น่าเสียดายที่ปัจจุบันยังไม่มีหนังสือใด ๆ เกี่ยวกับหัวข้อ 'เรียนรู้การพัฒนา Android ด้วย Scala' ซึ่งจะเป็นทางออกที่ดีที่สุด ฉันเดาว่าฉันจะต้องหยิบหนังสืออย่างน้อย 3 เล่มที่นี่หนึ่งเล่มสำหรับแต่ละหัวข้อ อย่างไรก็ตามฉันไม่รู้ว่าจะสั่งให้อ่านอะไรไม่ว่าจะอ่านพร้อมกันส่วนไหนของหนังสือ Java ที่ฉันสามารถข้ามได้อย่างปลอดภัย ฯลฯ เส้นทางที่ดีที่สุดสำหรับฉันในการเริ่มต้นสร้างแอพ Android โดยใช้ Scala คืออะไร
13 java  android  scala 

1
การย้ายแอปพลิเคชัน Grails ไปยัง Scala Play / Spray
เรามีเว็บแอปพลิเคชัน Grails ขนาดปานกลางโดยใช้ GORM / Hibernate บน PostgreSQL และ GSPs ที่ให้บริการ HTML และยังมี REST API สองสามตัว เรากำลังสร้างมาตรฐานให้กับ Scala และต้องการโยกย้ายแอปพลิเคชันนี้ไปยัง Play หรือ Spray ด้วย Slick เพื่อเข้าถึงฐานข้อมูลที่มีอยู่ ปัจจุบันว่องไวใช้สำหรับการรับรองความถูกต้อง / การอนุญาตและผู้ใช้ / บทบาท / ฯลฯ การจัดการ อะไรคือแนวทางที่เราสามารถทำได้เพื่อทำขั้นตอนการย้ายถิ่นฐานอย่างเป็นขั้นเป็นตอนหลีกเลี่ยงการย้ายถิ่นฐานครั้งใหญ่? ทั้งสองภาษาเป็น JVM มีวิธีใดที่จะหลีกเลี่ยงไม่ให้มันเหมือนแอปพลิเคชันเว็บแยกต่างหากที่ทำงานบนพอร์ตที่แยกกันที่ความยาวแขน

3
“ การเป็นตัวแทนที่ยกขึ้น” คืออะไร?
เพิ่งวิ่งข้ามคำนี้ที่นี่: http://www.codemesh.io/codemesh2014/viktor-klang "เราจะแสดงให้เห็นถึง Flow API - การนำเสนอแบบยก - เช่นเดียวกับวิธีที่เปลี่ยนแปลงได้ในการเปลี่ยนการนำเสนอแบบยกเป็นการดำเนินการแทน - Flow Materialization" Googling ไม่ได้ช่วยอะไรมาก

1
การจับคู่รูปแบบใน Clojure vs Scala
อะไรคือความแตกต่างที่สำคัญระหว่างการจับคู่รูปแบบในสองภาษานี้ ฉันไม่ได้อ้างถึงไวยากรณ์ แต่ความสามารถรายละเอียดการใช้งานขอบเขตการใช้งานและความจำเป็น แอปพลิเคชัน Scala (เช่น. ยกและเล่น) พูดอย่างภาคภูมิใจเกี่ยวกับรูปแบบภาษาที่ตรงกับความกล้าหาญ ในทางกลับกัน Clojure มีห้องสมุด core.match และสร้างขึ้นในการทำลายซึ่งดูเหมือนว่ามีประสิทธิภาพ * หมายเหตุ: เหตุผลที่ฉันได้รับแรงบันดาลใจในการถามคำถามนี้เป็นเพราะการโพสต์บล็อกที่ฉันเห็นซึ่งโปรแกรมเมอร์ในการทดลองสร้างล่ามเสียงกระเพื่อมโดยใช้ทั้ง Scala และ Clojure เขาบอกว่าการแข่งขัน Clojure แตกหลังจากช่วงระยะเวลาหนึ่ง แต่ไม่สามารถอธิบายได้ว่าทำไม แต่ฉันอยากรู้จริงๆ คุณสามารถค้นหาโพสต์นี้ได้ที่นี่: http://www.janvsmachine.net/2013/09/writing-simple-lisp-interpreter-in-clojure.html

5
ทำไม Scala ถึงสามารถปรับขนาดได้มากกว่าภาษาอื่น ๆ
ล็อคแล้ว คำถามและคำตอบของคำถามนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ Scala ถูกเรียกเก็บเงินเป็นภาษาที่ปรับขนาดได้คุณลักษณะที่รวมอยู่ในชื่อ : ชื่อ Scala เป็นกระเป๋าหิ้วของ "ปรับขนาดได้" และ "ภาษา" ซึ่งบ่งบอกว่ามันถูกออกแบบมาเพื่อเติบโตไปพร้อมกับความต้องการของผู้ใช้ "ปรับขนาดได้" หมายถึงอะไรในบริบทของสกาล่า? อะไรทำให้ Scala ปรับขนาดได้มากกว่าพูด Java?

2
เครื่องหมายสกาล่ามัด
เป็นไปได้ไหมที่จะเรียกใช้เมธอดโดยใช้รูปแบบ infix? ตัวอย่างเช่นใน Haskell ฉันสามารถเขียนฟังก์ชันต่อไปนี้: x `isAFactorOf` y = x % y == 0 แล้วใช้มันเช่น: if 2 `isAFactorOf` 10 ... ซึ่งในบางกรณีอนุญาตให้อ่านรหัสได้มาก มีอะไรคล้ายกับที่เป็นไปได้ใน Scala หรือไม่ ฉันค้นหาคำว่า "Scala infix notation" แต่คำนั้นดูเหมือนจะหมายถึงบางสิ่งที่แตกต่างใน Scala
12 scala 

1
เป็นการดีที่จะใช้ NoStackTrace ใน scala หรือไม่
ฉันเจอNoStackTraceมิกซ์อินสำหรับข้อยกเว้นในงานกาลา มันเป็นการปฏิบัติที่ดีที่จะใช้หรือควรพิจารณาว่า "ภายใน" เพื่อสกาล่าและทิ้งไว้ตามลำพัง?
11 exceptions  scala 

2
การพัฒนาใหม่ของ Java จะมีผลต่อการทำงานร่วมกันกับภาษาเช่น Scala และ Clojure อย่างไร
เท่าที่ฉันเข้าใจทั้ง Scala และ Clojure ได้รับการออกแบบเป็นภาษาใหม่ที่ ขึ้นอยู่กับ JVM และ รวมเข้ากับโค้ด Java ได้ง่ายในแง่ที่อนุญาตให้ใช้คลาส Java ภายในโค้ด Scala และ Clojure เริ่มต้นด้วย Java 8 (และอาจรุนแรงยิ่งขึ้นกับ Java รุ่นถัดไป) จะมีการเปลี่ยนแปลงในความหมายของภาษา Java ฉันต้องการถามว่าการเปลี่ยนแปลงเหล่านี้จะส่งผลกระทบต่อการทำงานร่วมกันระหว่าง Java และ Scala / Clojure อย่างไรและผลที่ตามมาจะเป็นอย่างไร ตัวอย่างเช่นเนื่องจาก lambdas ใน Java 8 ไม่ใช่วัตถุ (ดูเช่นที่นี่ ) Scala และ Clojure อาจต้องจัดการกับค่า Java ที่ไม่ใช่วัตถุ นี่จะเป็นปัญหาหรือไม่? ฉันนึกถึงสถานการณ์ต่อไปนี้: ภาษา Scala หรือ …
11 java  scala  clojure 

1
ทำไมสกาล่าจำเป็นต้องใช้ฟังก์ชั่นที่มีประเภทผลตอบแทนชัดเจน?
ฉันเพิ่งเริ่มเรียนรู้การเขียนโปรแกรมในสกาล่าและมันสนุกมาก ฉันชอบความสามารถในการประกาศฟังก์ชั่นภายในฟังก์ชั่นอื่นซึ่งดูเหมือนว่าจะใช้งานได้ง่าย หนึ่งโกรธสัตว์เลี้ยงฉันมีเกี่ยวกับสกาล่าคือความจริงที่สกาล่าต้องพิมพ์กลับที่ชัดเจนในการทำงานของมัน และฉันรู้สึกว่านี่เป็นอุปสรรคต่อการแสดงออกของภาษา นอกจากนี้ยังเป็นเรื่องยากที่จะเขียนโปรแกรมตามข้อกำหนดนั้น อาจเป็นเพราะฉันมาจาก Javascript และ Ruby comfort zone แต่สำหรับภาษาอย่างสกาล่าซึ่งจะมีฟังก์ชั่นเชื่อมต่อมากมายในแอปพลิเคชันฉันไม่สามารถเข้าใจได้ว่าฉันจะระดมสมองในหัวของฉันได้อย่างไรว่าฟังก์ชั่นเฉพาะที่ฉันเขียนควรกลับมาพร้อมการเรียกซ้ำ ข้อกำหนดของการประกาศชนิดส่งคืนอย่างชัดเจนในฟังก์ชันนี้ไม่รบกวนฉันสำหรับภาษาเช่น Java และ C ++ การเรียกซ้ำใน Java และ C ++ เมื่อเกิดขึ้นมักจะถูกจัดการด้วยฟังก์ชันสูงสุด 2 ถึง 3 ฟังก์ชัน ไม่เคยมีฟังก์ชั่นหลายอย่างเชื่อมโยงเข้าด้วยกันเหมือน Scala ดังนั้นฉันเดาฉันสงสัยว่ามีเหตุผลที่ดีว่าทำไมสกาล่าควรมีความต้องการของฟังก์ชั่นที่มีประเภทผลตอบแทนที่ชัดเจน?

3
แนวทางปฏิบัติที่ดีที่สุดของ Scala หรือ Clojure Functional Programming
ฉันทำการเข้ารหัสด้วยตนเองจำนวนมากได้รับประสบการณ์จากโมเดลการเขียนโปรแกรมแบบขนาน: นักแสดงซอฟต์แวร์หน่วยความจำทรานแซคชันซอฟต์แวร์การไหลของข้อมูล เมื่อฉันพยายามใช้สถาปัตยกรรมเหล่านี้กับชีวิตจริง - ลงในเว็บแอปพลิเคชันที่โหลดสูง - โมเดลใด ๆ ไม่สนับสนุนความทนทานและความคงทนของข้อมูล ภารกิจในชีวิตจริงต้องการบันทึกข้อมูลในตอนท้าย ซึ่งหมายความว่าฉันยังต้องใช้ DB และดักการซิงค์ฐานข้อมูลคอขวดที่ปรับขยายได้ที่เป็นไปได้เป็นต้น ไม่มีใครรู้ตัวอย่างที่ดีของสถาปัตยกรรม (src หรือข้อความหรือไดอะแกรมหรือพิมพ์เขียว) ที่ใช้Akka Actors หรือ Software Transaction Memory และใช้ความคงทนในตอนท้าย? ตัวอย่าง / ความคิดที่ดีสำหรับ Transactional Memory, Actors, Dataflow, Tuple ช่องว่างในแอปพลิเคชันในชีวิตจริงยินดีต้อนรับ

4
ออกแบบในภาษา“ แบบผสม”: การออกแบบเชิงวัตถุหรือการโปรแกรมเชิงฟังก์ชันหรือไม่?
ในช่วงไม่กี่ปีที่ผ่านมาภาษาที่ฉันชอบใช้นั้นเพิ่มมากขึ้น ตอนนี้ฉันใช้ภาษาที่เป็น "ลูกผสม": C #, F #, Scala ฉันชอบที่จะออกแบบแอปพลิเคชันของฉันโดยใช้คลาสที่สอดคล้องกับวัตถุโดเมนและใช้คุณสมบัติการทำงานที่ทำให้การเขียนรหัสง่ายขึ้นตรงและปลอดภัยยิ่งขึ้น (โดยเฉพาะอย่างยิ่งเมื่อทำงานกับคอลเลกชัน อย่างไรก็ตามทั้งสองโลก "ปะทะกัน" เมื่อมาถึงรูปแบบการออกแบบ ตัวอย่างเฉพาะที่ฉันเผชิญเมื่อเร็ว ๆ นี้คือรูปแบบการสังเกตการณ์ ฉันต้องการให้ผู้ผลิตแจ้งรหัสอื่น ๆ ("ผู้บริโภค / ผู้สังเกตการณ์" พูดที่เก็บข้อมูล DB ตัวบันทึกและอื่น ๆ ) เมื่อรายการถูกสร้างหรือเปลี่ยนแปลง ตอนแรกฉันทำมัน "ตามหน้าที่" เช่นนี้: producer.foo(item => { updateItemInDb(item); insertLog(item) }) // calls the function passed as argument as an item is processed แต่ตอนนี้ฉันสงสัยว่าฉันควรใช้วิธีการ "OO" …

3
วิธีการเขียนโปรแกรมเชิงหน้าที่สำหรับเกมที่ง่ายขึ้นโดยใช้ Scala และ LWJGL
I ซึ่งเป็นโปรแกรมเมอร์ที่จำเป็นของ Java ต้องการที่จะเข้าใจวิธีการสร้าง Space Invaders แบบง่าย ๆ ตามหลักการออกแบบฟังก์ชั่น Programming (โดยเฉพาะ Referential Transparency) อย่างไรก็ตามในแต่ละครั้งที่ฉันลองนึกถึงการออกแบบฉันจะหลงทางในความแปรปรวนอย่างรุนแรงซึ่งเป็นความไม่แน่นอนที่เหมือนกันซึ่งเป็นที่รังเกียจของนักเขียนโปรแกรมการทำงาน เป็นความพยายามที่จะเรียนรู้หน้าที่ Programming ฉันตัดสินใจที่จะพยายามที่จะสร้างเกมแบบโต้ตอบ 2D ง่ายมากช่องว่าง Invader (หมายเหตุขาดพหูพจน์) ในScalaใช้lwjgl นี่คือข้อกำหนดสำหรับเกมพื้นฐาน: ผู้ใช้จัดส่งที่ด้านล่างของหน้าจอเลื่อนไปทางซ้ายและขวาด้วยปุ่ม "A" และ "D" ตามลำดับ กระสุนของผู้ใช้ยิงพุ่งขึ้นมาเปิดใช้งานโดยตรงโดยสเปซบาร์โดยมีการหยุดชั่วคราวอย่างน้อยระหว่างนัดเป็น 0.5 วินาที กระสุนของเรือรบต่างด้าวยิงตรงลงโดยใช้เวลาสุ่ม 0.5 ถึง 1.5 วินาทีระหว่างการยิง สิ่งที่จงใจทิ้งไว้จากเกมดั้งเดิมคือเอเลี่ยนของ WxH อุปสรรคในการป้องกันที่ย่อยสลายได้ x3 จานรองความเร็วสูงที่ด้านบนของหน้าจอ ตกลงไปยังโดเมนปัญหาจริงแล้ว สำหรับฉันทุกส่วนที่กำหนดไว้ชัดเจน มันเป็นชิ้นส่วนที่ไม่สามารถกำหนดได้ซึ่งดูเหมือนจะปิดกั้นความสามารถของฉันในการพิจารณาวิธีการเข้าถึง ส่วนที่กำหนดขึ้นมานั้นเป็นวิถีกระสุนของกระสุนทันทีที่มีการเคลื่อนไหวอย่างต่อเนื่องของเอเลี่ยนและการระเบิดเนื่องจากการชนทั้งสอง (หรือทั้งสองอย่าง) ของเรือของผู้เล่นหรือมนุษย์ต่างดาว ชิ้นส่วนที่ไม่สามารถกำหนดค่าได้ (สำหรับฉัน) กำลังจัดการสตรีมอินพุตของผู้ใช้การจัดการดึงค่าสุ่มสำหรับการกำหนดกระสุนไฟเอเลี่ยนและการจัดการเอาต์พุต …

4
สกาล่าจะเป็นทางเลือกที่ดีแทนที่จะเป็นจาวา
เราจะเริ่มโครงการใหม่ซึ่งจะเกี่ยวข้องกับการฝึกอบรมผู้พัฒนา. net ทั้งหมดใน Java (frameworks / ECO system ฯลฯ ) เรามีโค้ดจำนวนมากที่เขียนใน C # และดูเหมือนว่าทั้งหมดนี้จะสูญเปล่าเนื่องจากเราต้องเขียนใหม่ทั้งหมดใน Java ปัญหาที่ฉันเห็นคือว่าในปีแรกหรือประมาณสองปีเราจะไม่มีอะไรจะส่งมอบเพราะเราจะใช้เวลาส่วนใหญ่ในการทำซ้ำสิ่งที่เรามีมาก่อน แต่ตอนนี้ใน Java เนื่องจากทีมของเรากระจายอยู่ในสำนักงานต่าง ๆ ทั่วโลกและเรามีนักพัฒนาจาวาจำนวนมาก (20 ถึง 30) และนักพัฒนา 10 คนที่ใช้. net เราต้องการให้นักพัฒนาทั้งหมดใช้ภาษา / แพลตฟอร์มเดียวกันเพื่อให้เราสามารถเริ่ม นำส่วนประกอบ / โมดูลกลับมาใช้ใหม่ ดังนั้นฉันสามารถเข้าใจมุมมองของผู้บริหาร เมื่อวานฉันเจอ Scala และสงสัยว่ามันจะดีกว่าถ้าจะใช้กับผลิตภัณฑ์ปัจจุบัน (ซึ่งเขียนใน C #) แล้วอย่างน้อยเราก็จะมีผลิตภัณฑ์ที่ใช้งานได้ในหนึ่งปี นอกจากนี้ในหนึ่งปีเรามีโมดูลที่สามารถใช้ในโลก Java ได้ในขณะที่เราย้ายข้อมูลส่วนอื่น ๆ ของผลิตภัณฑ์ Scala จะเป็นตัวเลือกที่ดีกว่า Java …
11 java  c#  scala 

2
ทำไมคอมไพเลอร์ Scala ไม่สามารถให้คำเตือนการจับคู่รูปแบบสำหรับคลาส / คุณลักษณะที่ไม่ได้ปิดผนึกได้
ถ้าฉันใช้un unผนึกtraitหรือabstract classใน Scala จากนั้นใช้การจับคู่รูปแบบฉันสงสัยว่าคอมไพเลอร์ไม่ทราบเวลาที่คอมไพล์สำหรับ patternmatch นี้โดยเฉพาะการใช้งานที่เป็นไปได้ของคุณลักษณะ / คลาสนี้มีอยู่หรือไม่ ดังนั้นถ้าเป็นเช่นนั้นมันจะไม่เตือนรูปแบบการจับคู่แม้ว่าtrait/ abstract classไม่ได้ถูกปิดผนึกเพราะเขารู้ว่าสามารถใช้ประเภทใดได้โดยตรวจสอบการอ้างอิง / การนำเข้าที่เป็นไปได้ทั้งหมดหรือไม่ เช่นถ้าฉันมีOption[A]และฉันจับคู่รูปแบบเฉพาะสำหรับSome[A]แต่ไม่ได้สำหรับNoneคอมไพเลอร์จะบ่นเพราะOptionถูกปิดผนึก หากคอมไพเลอร์ไม่สามารถรู้ / แก้ปัญหานั้นทำไมเขาถึงทำไม่ได้? และถ้าคอมไพเลอร์ (ตามหลักวิชา) สามารถทำเช่นนั้นได้เหตุผลอะไรที่มันไม่ได้ใช้ใน Scala? มีภาษาอื่นที่สนับสนุนพฤติกรรมแบบนั้นหรือไม่?

2
วิธีการแบบไม่มีพารามิเตอร์และว่างเปล่าใน Scala
ตอนนี้ฉันกำลังเรียน Scala ผ่าน Programming Scala (ที่ 2) ของ Odersky ฉันเกินบทที่ 10 ที่เขาเริ่มแนะนำวิธีการแบบไม่มีพารามิเตอร์และแบบไม่มีพารามิเตอร์ ฉันไม่สามารถเอาหัวไปรอบ ๆ มันได้ จนถึงตอนนี้สิ่งที่ฉันเข้าใจคือฉันควรใช้ parens ว่างถ้าวิธีการมีผลข้างเคียงและวิธีการแบบไม่มีพารามิเตอร์ ฉันไม่สามารถเข้าใจได้ว่าข้อได้เปรียบของอนุสัญญานี้คืออะไร ฉันอ่านโพสต์ใน Exchange Exchange แต่ตามจริงแล้วเมื่อโพสต์เริ่มพูดถึงหัวข้อนี้ในระดับลึกฉันก็หายไป ฉันกำลังมองหาคำอธิบายง่ายๆเกี่ยวกับกรณีการใช้งานทั่วไปสำหรับคุณสมบัติภาษานี้และข้อดีที่จะช่วยให้ฉันเข้าใจดีขึ้นคืออะไร
10 scala 

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