2017-05-22 13 views
0

私はスカラープログラミングには新しく、文字列からオプション[文字列]への変換が困難に直面しています。私が従うアプローチが正しいかどうかはわかりません。ここでは、コードは次のとおりです。ここで文字列をオプションに変換する[文字列]

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 
    } 
    } 
} 

、私はnewNameoldNameのすべてのインスタンスを置き換える必要があります。 代わりに、私は応答の"1"を得ています。 empType: Option[String]のタイプをStringに変更することはできません(そのようにする必要があります)。 私はそれが非常に小さな変更が必要だが、何を配置することはできません知っている。 助けてください。

+1

どの入力に対して、応答として '' 1 "'を得ますか? –

答えて

0

は、私はあなたがのtoString()
ここ 場合、一部(OLDNAME)=> empInfo.copy(empType = 一部(NEWNAME))。のtoString() ケース_ => EMPINFO

1

を追加すると思います私はあなたの質問を理解していません。しかし、oldNameをパターンとして使用する場合は、それを大文字にする必要があります。

問題が解決しない場合は、問題をより明確かつ正確に記述してください。

+1

も参照してください。http://stackoverflow.com/questions/7078022/why-does-pattern-matching-in-scala-not-work-with-variables – Yaneeve

+0

'Some(" a string ")': 'オプション[文字列] '。 'Option [String]'型の 'String'値を取得する:' str.get' – Seraf

関連する問題