FirstOrDefault y LastOrDefault en Scala.

En este post te voy a explicar como puedes emular el método FirstOrDefault de C# en Scala.

Primeros pasos.

First y FirstOrDefault son métodos de extension de C# que te permiten obtener el primer registro que cumple una condición. En el caso de First, si no existe una coincidencia, entonces, se arroja una excepción. Si usas FirstOrDefault, en lugar de una excepción se retornará Null cuando no existan elementos que cumplan la condicional. Estos dos comportamientos son problemáticos en Scala. No porque no puedas implementarlos, que puedes, sino porque el uso de las excepciones genera efectos secundarios, y Null puede llevar a tener excepciones no controladas también.

En Scala, empleamos Options o Nil para indicar la ausencia de valor. Cualquier método de transformación del runtime de Scala que ocupes no va a retornar Null. Va a retornar un Option o Nil; tu vas a tener que mapearlo con pattern matching en el caso de que obtengas un Some o un None.

Implementando el comportamiento

No existen métodos directamente equivalentes, vas a necesitar implementar combinaciones para obtener el comportamiento esperado. Es recomendable que no emplees nulos o excepciones. Para el caso de Find y Last, puedes ocupar Either, para indicar un error. Para el caso de FirstOrDefault o FirstOrDefault, el método find te retornará un option, no tendrás que lidiar con nulos.

Ejemplo:

En este ejemplo genere un método de extension para emular el comportamiento de Linq. No genere excepciones o referencias nulas.

Referencias:

  1. https://www.iteramos.com/pregunta/61297/grafico-de-ienumerable-linq-equivalentes-en-scala
Gustavo Sánchez
Últimas entradas de Gustavo Sánchez (ver todo)

Soy especialista en escribir software de calidad. Mediante el uso de marcos de trabajo, técnicas y automatización de procesos he podido reducir los costes operativos de los sistemas de la empresa. Sistemas confiables y adaptables producen clientes felices.