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:
- NVL in SQL Server - 2023-11-01
- ¿Que es Cake Build? - 2023-02-22
- #How to fix error: MSB4019: The imported project «Microsoft.Data.Tools.Schema.SqlTasks.targets» was not found - 2023-02-20