2017-04-19 28 views
0

我有一个任务需要找到一个数组中的特定字符串: 1.如果找到,返回它的值; 2.如果未找到,则返回-1。条件匹配在一个数组中的案例类在斯卡拉

我写了一个“主意”代码,但我不知道如何正确完成它。

case class person(name:String, value: Int) 
personList[Array[person]] 

val result = personList match { 
case x if x.name == "john" => x.value 
case _ => -1 } 

的编译报道在 “case x if x.name

+0

如果找到返回值,即'String'。如果未找到,则返回-1,即“Int”。这听起来不对。 'String'和'Int'是不同的类型。 – jwvh

+0

对不起,改成Int – lserlohn

回答

1

将这工作给你的错误?

persons.find(_.name == "john").fold(-1)(_.value) 

注:我已经离开了persons阵列的创建和/或人口最多给你。

+0

谢谢你提醒我用find() – lserlohn

0
val result = personList.find(_.name=="john") match { 
case some(x) => x.value 
case None => -1 }