Last active
August 29, 2015 14:09
-
-
Save Centaur/3f255d78393a2cc1c1f0 to your computer and use it in GitHub Desktop.
forEgret
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
def name2id1(name: String): Option[String] = name match { | |
case "name1" => Some("id1") | |
case "name2" => Some("id2") | |
case "name3" => Some("id3") | |
case _ => None | |
} | |
def name2id2(name: String): Option[String] = name match { | |
case "name1" => None | |
case "name2" => Some("id2") | |
case "name3" => Some("id3") | |
case _ => None | |
} | |
def name2id3(name: String): Option[String] = name match { | |
case "name1" => Some("id1") | |
case "name2" => Some("id2") | |
case "name3" => None | |
case _ => None | |
} | |
def name2id4(name: String): Option[String] = name match { | |
case "name1" => Some("id1") | |
case "name2" => None | |
case "name3" => Some("id3") | |
case _ => None | |
} | |
def name2id5(name: String): Option[String] = name match { | |
case "name1" => Some("id1") | |
case "name2" => None | |
case "name3" => None | |
case _ => None | |
} | |
def name2id6(name: String): Option[String] = name match { | |
case "name1" => None | |
case "name2" => None | |
case "name3" => None | |
case _ => None | |
} | |
def queryAll(names: List[String], qFunc: String => Option[String]): List[String] = { | |
@annotation.tailrec | |
def helper(remain: List[String], accu: List[String]): List[String] = remain match { | |
case Nil => accu | |
case head :: tail => qFunc(head) match { | |
case None => Nil | |
case Some(id) => helper(tail, id :: accu) | |
} | |
} | |
helper(names, Nil).reverse | |
} | |
val names = List("name1", "name2", "name3") | |
assert(queryAll(names, name2id1) == List("id1", "id2", "id3")) | |
assert(queryAll(names, name2id2) == Nil) | |
assert(queryAll(names, name2id3) == Nil) | |
assert(queryAll(names, name2id4) == Nil) | |
assert(queryAll(names, name2id5) == Nil) | |
assert(queryAll(names, name2id6) == Nil) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
def getIds(names:List[String])(func:String=>Option[Long]):List[Long]={
}