scala bertahan seq dengan Opsi

Saya punya

case class ProcessSteps(stepsData: Seq[ProcessStepTemplatesModel])

Urutan ini dapat memiliki ProcessStepTemplatesModel kosong

Sekarang ketika saya ingin mempertahankan array seperti ini:

request.body.asJson.foreach(f = _.validate[ProcessSteps] match {
      case JsSuccess(processSteps, _) =>
        // PROBLEM HIER
        processSteps.stepsData.foreach(processStep => processTemplateDTO.addProcessStepTemplateToProcessTemplate(processStep, processId).map {

Saya mendapat kesalahan karena nilai nol.

Apakah ada cara untuk menghitung nilai nol dan hanya mempertahankan nilai yang bukan nol?

Saya menjalankan aplikasi scala Playframework dengan apik sebagai pemeta basis data

Terima kasih


person Felix    schedule 03.07.2017    source sumber
comment
Bagaimana kalau menggunakan Option[Seq[ProcessStepTemplatesModel]] alih-alih null? Atau menggunakan Seq.empty[T] sebagai nilai default?   -  person Yuval Itzchakov    schedule 03.07.2017
comment
Option[Seq tidak memungkinkan. Saya tidak ingin mempertahankan nilai nol, saya ingin melewatkannya   -  person Felix    schedule 03.07.2017
comment
Bagaimana dengan processSteps.stepsData.filter( _ != null).foreach(...)?   -  person thwiegan    schedule 03.07.2017


Jawaban (1)


Saya menyarankan Anda untuk menggabungkan ProcessStepTemplatesModel dalam Option untuk menunjukkan mungkin ada null nilai: case class ProcessSteps(stepsData: Seq[Option[ProcessStepTemplatesModel]]), lalu filter(_.isDefined) urutan Anda agar hanya memiliki langkah-langkah yang ada (tidak dapat dibatalkan) dan menjalankan sisa kode dengan aman.

person solar    schedule 03.07.2017
comment
Hai, kami sudah mencobanya juga, tetapi kemudian saya mendapat kesalahan di sini implicit val ProcessStepsFormat: OFormat[ProcessSteps] = Json.format[ProcessSteps] - person Felix; 03.07.2017
comment
Kesalahannya adalah: Tidak ada format implisit untuk Seq[Option[models.ProcessStepTemplatesModel]] yang tersedia. - person Felix; 03.07.2017
comment
Saya merasa bahwa format implisit untuk mengoperasikan objek ini harus diganti dan ditentukan sendiri. Sepertinya guyz di thread ini membahas masalah yang relevan, bukan? - person solar; 03.07.2017
comment
Seharusnya, menurut paragraf 2,5 dokumen tentang opsi membaca dan untuk jawaban ini yang menurut saya sangat mirip dengan kasus Anda - person solar; 03.07.2017