Имайки дадена карта в Scala, искам да опитам с първи ключ, ако не бъде намерен, опитайте с различен ключ, ако не бъде намерен отново, върнете None. Следното работи според очакванията:
val scores: Map[String, Int] = Map("Alice" -> 10, "Bob" -> 3)
val singleGet: Option[Int] = scores.get("NotAKey")
println(singleGet) // None
val doubleGet = scores.getOrElse("NotAKey", scores.get("NotAKeyAgain")) // works ok if no type
println(doubleGet) // None
Но ако поставя тип за doubleGet, той дава грешки:
val doubleGet: Option[Int] = scores.getOrElse("NotAKey", scores.get("NotAKeyAgain")) // ERROR
„Израз от тип Any не отговаря на очаквания тип Option[Int]“
И така, какъв би бил най-добрият начин да направите това?