รายการใน Scala ไม่ได้ถูกออกแบบมาให้แก้ไข ในความเป็นจริงคุณไม่สามารถเพิ่มองค์ประกอบกับสกาล่าList
; มันเป็นโครงสร้างข้อมูลที่เปลี่ยนแปลงไม่ได้เช่น Java String สิ่งที่คุณทำจริงเมื่อคุณ "เพิ่มองค์ประกอบในรายการ" ใน Scala คือการสร้างรายการใหม่จากรายการที่มีอยู่ (ที่มา)
แทนการใช้รายการสำหรับกรณีการใช้งานดังกล่าวผมขอแนะนำให้ใช้อย่างใดอย่างหนึ่งหรือArrayBuffer
ListBuffer
โครงสร้างข้อมูลเหล่านั้นออกแบบมาเพื่อเพิ่มองค์ประกอบใหม่
ในที่สุดหลังจากการดำเนินการทั้งหมดของคุณเสร็จสิ้นแล้วบัฟเฟอร์สามารถถูกแปลงเป็นรายการ ดูตัวอย่าง REPL ต่อไปนี้:
scala> import scala.collection.mutable.ListBuffer
import scala.collection.mutable.ListBuffer
scala> var fruits = new ListBuffer[String]()
fruits: scala.collection.mutable.ListBuffer[String] = ListBuffer()
scala> fruits += "Apple"
res0: scala.collection.mutable.ListBuffer[String] = ListBuffer(Apple)
scala> fruits += "Banana"
res1: scala.collection.mutable.ListBuffer[String] = ListBuffer(Apple, Banana)
scala> fruits += "Orange"
res2: scala.collection.mutable.ListBuffer[String] = ListBuffer(Apple, Banana, Orange)
scala> val fruitsList = fruits.toList
fruitsList: List[String] = List(Apple, Banana, Orange)
List
มันถูกแปลงเป็น aListBuffer
, องค์ประกอบถูกผนวกเข้าด้วย, และการListBuffer
แปลงกลับ (เหมือนString
และStringBuilder
ใน Java), แต่นั่นเป็นเพียงการคาดเดา