Это потому что:
def findIntPair(x: Int, y: Int): (Int, Int) = {
(f(x), f(y)) match {
case (None, None) || (None, _) || (_, None) => fail("Unable to find the pair" )
case (a, b) => (a.get, b.get) //here f(x) = a and f(y) = b
}
}
Вы хотите что-то вроде этого:
def findIntPair(x: Int, y: Int): (Int, Int) = {
(f(x), f(y)) match {
case (None, None) || (None, _) || (_, None) => fail("Unable to find the pair" )
case (Some(a), Some(b)) => (a, b)
}
}
Но это не лучший способ сделать это, я думаю, что это лучше:
def findIntPair(x: Int, y: Int): (Int, Int) = {
if(f(x).isDefined && f(y).isDefined) (f(x).get,f(y).get)
else fail("Unable to find the pair" )
}