2017-05-22 7 views
0

Ich bin neu in der Scala-Programmierung und habe Schwierigkeiten beim Konvertieren von String in Option [String]. Ich bin mir nicht sicher, ob der Ansatz, dem ich folge, korrekt ist oder nicht. Hier ist der Code:String in Option [String] konvertieren

EmpInfo.scala: 

package model 
case class EmpInfo(empType: Option[String]) extends Named { 
    override def name: String = clientName 
} 

EmpReconciliator.scala 

import scalaz._ 
import Scalaz._ 
import scala.concurrent.Future 
import play.api.mvc.Action 
import play.api.mvc.AnyContent 
import model.EmpInfo 

trait EmpReconciliator[A] extends BaseController[A] { 

    val oldName = "abc" 
    val newName = "xyz" 
    def reconcileGeneric(genericResource: A) = { 
    (genericResource match {   
     case empInfo : EmpInfo => reconcileEmpInfo(empInfo) 
     case [email protected]_ => other 
    }).asInstanceOf[A] 
    } 

    def reconcileEmpInfo(empInfo: EmpInfo) = { 
    empInfo.empTypeType match { 
     case Some(oldName) => empInfo.copy(empType = Some(newName)) 
     case _ => empInfo 
    } 
    } 
} 

Hier muss ich alle Instanzen oldName mit newName ersetzen. Aber stattdessen bekomme ich "1" in der Antwort. Ich kann den Typ empType: Option[String] nicht zu String ändern (muss es so). Ich weiß, es ist eine sehr kleine Änderung erforderlich, aber kann nicht was platzieren. Bitte helfen.

+1

Für welchen Eingang erhalten Sie '" 1 "' als Antwort? –

Antwort

0

Ich glaube, Sie haben toString()
hier Fall Einige (oldName) => empInfo.copy (empType = Einige (newName)). ToString() Fall _ => empInfo

1

hinzufügen Ich verstehe deine Frage nicht. Aber wenn Sie oldName als Muster verwenden möchten, müssen Sie es groß schreiben.

val OldName = "abc" 
val newName = "xyz" 

empInfo.empType match { 
    case Some(OldName) => empInfo.copy(empType = Some(newName)) 
    case _ => empInfo 
} 

Wenn das das Problem, das Sie haben, nicht löst, geben Sie bitte Ihr Problem klarer und genauer an.

+1

siehe auch http://stackoverflow.com/questions/7078022/why-does-pattern-matching-in-scala-not-work-with-variables – Yaneeve

+0

Art von 'Some (" ein String ")': ' Option [Zeichenfolge] '. Get 'String' Wert eines' Option [String] 'type:' str.get' – Seraf