Last active
August 29, 2015 14:09
-
-
Save Centaur/2e6d5f55d2a2f2a3943a to your computer and use it in GitHub Desktop.
Refactor protocolMap
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import util._ | |
abstract class SrcProtocol(val id: String) | |
case class CompileSrc(override val id:String) extends SrcProtocol(id) | |
case class TestSrc(override val id:String) extends SrcProtocol(id) | |
case class SystemSrc(override val id:String) extends SrcProtocol(id) | |
abstract class DstProtocol(val id: String) | |
case class CompileDst(override val id: String) extends DstProtocol(id) | |
case class TestDst(override val id: String) extends DstProtocol(id) | |
case class SystemDst(override val id: String) extends DstProtocol(id) | |
def idConvert(id: String): Try[String] = | |
if(id == "good") Success("dst:"+id) else Failure(new RuntimeException(id)) | |
def protocolMap(src: SrcProtocol): Unit = { | |
src match { | |
case CompileSrc(id) => | |
idConvert(id) match { | |
case Success(id) => println(CompileDst(id)) | |
case Failure(e) => println(e) | |
} | |
case TestSrc(id) => | |
idConvert(id) match { | |
case Success(id) => println(TestDst(id)) | |
case Failure(e) => println(e) | |
} | |
case SystemSrc(id) => | |
idConvert(id) match { | |
case Success(id) => println(SystemDst(id)) | |
case Failure(e) => println("syserror") | |
} | |
} | |
println("finished") | |
} | |
protocolMap(CompileSrc("good")) | |
protocolMap(CompileSrc("bad")) | |
protocolMap(TestSrc("good")) | |
protocolMap(TestSrc("bad")) | |
protocolMap(SystemSrc("good")) | |
protocolMap(SystemSrc("bad")) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
不应该是这样吗?