2017-04-19 6 views
0

配列内の特定の文字列を見つける必要があります。 1.見つかった場合は、その値を返します。 2.見つからなければ、-1を返します。配列内でスカラーのcaseクラスと一致する条件

私は「アイデア」コードを書いたが、正しく仕上げる方法はわからない。

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

戻り値が見つかった場合、つまり「文字列」です。見つからない場合は-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 } 
関連する問題