ということで今回はScalaの特徴をまとめます。
まず。特徴から。
1 Javaとの共存
Javaと完全な相互互換性があります。Scalaのコードの実行もJava仮想マシン(JVM)上で行われます。
これはマイナーな言語によくある「既存のライブラリーが少ない」という問題を解決しているらしいです。
2 関数型言語
Scalaは関数型言語です。
そのため、Scalaでは、関数を数字や文字列などの「一人前の値」として扱うことができます。
だから、CやC++、Javaなどと違い、関数を引数としてとる関数(高階関数)が定義できたりします。
これは、Scalaのコードに、大幅な表現力を与えてるのです。
3 オブジェクト指向
Scalaはオブジェクト指向です。
クラスの定義はもちろんながら、Scalaは「オブジェクトの合成」という点で、他のほとんどの言語に大きな差をつけています。
それを実現するのがJavaインターフェイスによく似た、「トレイト」というものです。
しかし、Javaインターフェイスと違って、トレイトは具象メソッド、フィールドを持つことができます。
Scalaは、オブジェクトを作るときに、トレイトの機能(複数でも可)を混ぜることができます。
一見、多重継承に似ているように見えますが、トレイトは特定しない任意のスーパークラスに新機能を追加できるため、
通常のクラスよりも機能的にこっちの方が勝ってます。
4 簡潔性
とにかく書くコードがJavaに比べて少ないです。
例えば、コンストラクターのあるクラス定義は、Javaならこんな感じ
/*Javaの場合*/
class JavaClass{
private int index;
private String name;
public JavaClass(int index, String name){
this.index = index;
this.name = name;
}
5 柔軟性
このコードを見てください。
val intActor = actor{
loop{
receive{
case x: Int => println("Int:" + x)
case y:String => println("String:" + x)
}
}
}
実は違います。このloop,receiveは、Scalaのアクターライブラリで定義された関数名で、引数に関数をとるのです。
このように、Scalaは、新しい制御構造もどきを作ることができます。言い換えると、プログラマーの好みに応じて、
Scalaを進化させることができるのです。
これで紹介を終わります。このにっきを読んだ誰かが新しいScalarとなることを祈って。