2016-03-26 18 views

答えて

5

あなたは人のidを比較述語でfindを使用することができます。

val p = store.find(_.id == someId) 

これは、このようなIDを持つ人物が存在しない場合は、述語またはnoneに一致する最初の要素であなたにOption[Person]を与えるだろう。

+1

ラブリーと簡単な投票をすれば人にid' 'の地図を使用して検討する必要がありますどうもありがとう。メソッドから返す場合、 'Person'フォームの内容をOptionにするにはどうすればいいですか? –

+0

をこのロット.. – harryg

+0

@harrygオプションが空でないかどうかをチェックし、getを使用するか(ドキュメントをチェックする可能性のある他のメソッドがあります)、またはパターンマッチングを使用してください: '... match { case Some(p)= println( "Person" + p.id + "" + p.name) ケースなし=> println( "None") } ' –

1

これは直接的な回答ではありませんが、@Alexisの回答を補完するための提案が多くあります。

店舗にMap[Int, Person]を使用することを検討してください。店舗が大きくなった場合のために、Personの検索時間が改善されます。

例:

def main(args: Array[String]) = { 
    lazy val store: Map[Int, Person] = Map(
    1 -> Person(1, "Bob"), 
    2 -> Person(2, "Jim") 
) 

val someId = 1 
val result: Option[Person] = store.get(someId) 
+0

Heh。スナップ! (私のコメントを参照してください) –

+0

@TheArchetypalPaul LOL :) –

+0

も私の投票を得る、それは同様に動作します。 –

関連する問題