我是scala编程的新手,我很难从String转换为Option [String]。我不确定我所遵循的方法是否正确。这是代码:
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 other@_ => other
}).asInstanceOf[A]
}
def reconcileEmpInfo(empInfo: EmpInfo) = {
empInfo.empTypeType match {
case Some(oldName) => empInfo.copy(empType = Some(newName))
case _ => empInfo
}
}
}
在这里,我需要将oldName
的所有实例替换为newName
。
但相反,我在回复中得到"1"
。我无法将empType: Option[String]
的类型更改为String
(需要这样)。
我知道这是一个非常小的变化,但不能放置什么。
请帮忙。
答案 0 :(得分:1)
我不明白你的问题。但是,如果您想使用oldName
作为模式,则必须将其大写。
val OldName = "abc"
val newName = "xyz"
empInfo.empType match {
case Some(OldName) => empInfo.copy(empType = Some(newName))
case _ => empInfo
}
如果这还没有解决您遇到的问题,请更清楚,更准确地说出您的问题。
答案 1 :(得分:0)
我认为你必须添加toString()
这里
case Some(oldName)=> empInfo.copy(empType =
有些(newName)将)。的toString()
case _ => empInfo
答案 2 :(得分:-1)
据我了解,您面临的问题是将String
类型转换为Option[String]
类型。
然后尝试将其包装为:Option(<variablename>)
,如示例中的Option(newvalue)
。