関数コードの簡潔さを説明したい場合の典型的な例は、コレクションとその操作を使用することができます。たとえばCustomer
、顧客のリストから顧客名のソートされたリストを作成するクラスとメソッドを考えてみましょう。
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;
}
Scalaバージョン:
class Customer(val name: String, /* ... other attributes */)
def sortedCustomerNames(customers: List[Customer]): List[String] =
customers.map(c => c.name).sorted
注意
キーストロークに関する簡潔さは、常にコードの品質と保守性の良い尺度とは限りません。
また、一般に、Scalaが新しいからといって、JavaからScalaに切り替えることはお勧めしません。チームメンバーのほとんどがJavaに慣れている場合、チームはScala(または彼らがよく知らない他のプログラミング言語)よりもJavaの方がはるかに生産性が高くなります。
私は約2年間、自分の自由な時間にScalaを学習してきましたが、つい最近(オンラインコースに参加した後)、JavaよりもScalaでより生産的になることができると感じました。この時点に到達する前は、Scalaを本番環境で使用することは考えていませんでした。