プログラミング言語、「Scala」について、今回はScalaを全く知らない人、これから学習し始めようとしている人へ向けて説明していきます。
まず、Scalaとは、どんな言語なのか。
Scalaとはオブジェクト指向と関数型プログラミングの両方を扱う言語です。
オブジェクト指向とは、仕様の変更に対して柔軟にプログラムを実装することができる手法です。オブジェクト指向は「クラス」という概念が存在しています。
また、関数型プログラミングは、関数の組み合わせでプログラムを作り上げます。
書き方
ここで、Scalaの基本的な書き方を例でみてみましょう。
まずは、変数(var)を使ってみましょう。
宣言する形式は、以下2つのいずれかにします。
var 変数名:型 = 初期値
var 変数名 = 初期値
また、以下のようにすれば、複数の変数を一度に定義できます。
var 変数名1,変数名2 = 初期値
scala> var num:Int = 10
num: Int = 10
scala> num = 20
num: Int = 20
scala> var n1,n2,n3 = 1
n1: Int = 1
n2: Int = 1
n3: Int = 1
クラスの宣言
続いて、クラスの宣言を行います。
Scalaでクラスを定義するには「class」キーワードを使用します。構文は、以下のようになっています。
class クラス名 { //フィールドやメソッドの定義 }
フィールドは「val」か「var」で定義し、メソッドは通常の関数と同じく「def」で定義します。
valとvarの違いは、値に再代入できるかできないかの違いです。
フィールド
例として、プログラマを表す「Programmer」クラスを定義してみましょう。
class Programmer {
var language = “Scala”
def coding() = println(language + “を使ってコーディングします”)
}
メソッドへのアクセス
次に、定義したクラスをインスタンス化し、フィールドやメソッドを呼び出してみましょう。Javaと同じようにnewキーワードを使用してクラスをインスタンス化してフィールドやメソッドを呼び出せます。
scala> val pg = new Programmer
pg: Programmer = Program
mer@
00000014
scala> pg.coding()
Scalaを使ってコーディングします
scala> pg.language = "Java"
pg.language: java.lang.String = Java
scala> pg.language
res9: java.lang.String = Java
scala> pg.coding()
Javaを使ってコーディングします
上の例では、「pg.language」として直接フィールドにアクセスしているように見えますが、実際は自動的にアクセサメソッドが定義され、それを介してアクセスしています。
「language」フィールドを参照するときは同名のメソッドが呼ばれ、languageフィールドへ代入するときは、「language_=({代入する値}:String)」というメソッドが呼ばれています。
なお、フィールドをvalにした場合、参照用メソッドのみが提供されます。
まとめ
今回はここまでになります。
Scalaはメリットの大きい言語です。
しかし、Scala学習をはじめるにあたっての障壁として、学習コストが高いことがあります。学習コストが高いというのは、習得するまでに時間がかかるということを意味します。
具体的に何が難しいかというと、オブジェクト指向言語と関数型言語の両方を十分理解した上で使うことで、はじめてScalaを使いこなせるようになるからです。
学習コストが高いというデメリットはあるものの、一度勉強してしまえば、考え方は他の言語に通じるので、非常に汎用性の高い言語であるといえるでしょう。
次回は、基本コンストラクタについて
一緒に頑張っていきましょう。