Учитывая следующий фрагмент кода:
import scala.util.Try
def foo(x:Int) : (Int, String) = {
(x+1, x.toString)
}
def main(args: Array[String]) : Unit = {
val r1: Try[(Int, String)] = for {
v <- Try { foo(3) }
} yield v
val r2: Try[(Int, String)] = for {
(i, s) <- Try { foo(3) } // compile warning refers to this line
} yield (i, s)
}
<сильный>1. Почему компиляция приведенного выше кода выдает следующее предупреждение?
`withFilter' method does not yet exist on scala.util.Try[(Int, String)], using `filter' method instead
[warn] (i, s) <- Try { foo(3) }
[warn] ^
[warn] one warning found
<сильный>2. Почему withFilter
вообще используется при извлечении в кортеж?
Обновлять
- Предупреждение появляется с Scala 2.10.5
- Предупреждение не появляется в Scala 2.11.7.
Независимо от предупреждающего сообщения, мне очень интересно узнать, используется ли withFilter
? (см. вопрос 2)