Un ejemplo típico si desea ilustrar la concisión del código funcional podría usar colecciones y sus operaciones. Por ejemplo, considere una clase Customery un método para crear una lista ordenada de nombres de clientes a partir de una lista de clientes.
Aquí está la implementación de Java:
class Customer
{
String name;
... // Other attributes.
}
List<String> sortedCustomerNames(List<Customer> customers)
{
List<String> names = new ArrayList<String>();
for (Customer customer : customers)
names.add(customer.name);
Collections.sort(names);
return names;
}
Versión Scala:
class Customer(val name: String, /* ... other attributes */)
def sortedCustomerNames(customers: List[Customer]): List[String] =
customers.map(c => c.name).sorted
NOTA
La concisión en términos de pulsaciones de teclas no siempre es una buena medida de la calidad del código y la facilidad de mantenimiento.
Además, en general, no recomendaría cambiar de Java a Scala solo porque Scala es más reciente. Si la mayoría de los miembros del equipo están más familiarizados con Java, el equipo será mucho más productivo con Java que con Scala (o cualquier otro lenguaje de programación que no conozcan bien).
He estado aprendiendo Scala en mi tiempo libre durante aproximadamente dos años, y solo recientemente (después de asistir a un curso en línea) tuve la sensación de que puedo ser más productivo en Scala que en Java. Antes de llegar a este punto, no habría considerado usar Scala para la producción.