Scala」カテゴリーアーカイブ

配列とリスト

Scala には配列(Array)とリスト(List)がある。 Array は ミュータブル、つまり変更ができるけど、List はイミュータブル、つまり変更ができない。これは値としてそうなのであって、変数の var と … 続きを読む

カテゴリー: Scala | コメントする

高階関数

関数を引数にとる、高階関数を定義することもできる。 次の例は、引数の整数に関数を2度適用する関数、じゃなくてメソッドだ。Scala では関数とメソッドは別のものだけど、この高階関数という用語はどちらにも使うみたい。 sc … 続きを読む

カテゴリー: Scala | コメントする

関数のカリー化

Scala は関数型プログラミング言語でもあるので、関数のカリー化もできる。 scala> val addCurried = (x: Int) => ((y: Int) => x + y) addCur … 続きを読む

カテゴリー: Scala | コメントする

関数

型パラメータの変位指定とか境界とかを読んでいたんだけど、いまいちよくわからないので、とりあえずパスして関数に行く。 関数 Scala の関数は、ほかの言語とはちょっと趣が違う。関数は単に Function0 から Fun … 続きを読む

カテゴリー: Scala | コメントする

タプル

昨日は型パラメータを2つとる Pair というクラスを作った。 scala> class Pair[A, B](val a: A, val b: B) defined class Pair こういうコンテナ型は、メソッド … 続きを読む

カテゴリー: Scala | コメントする

型パラメータ(type parameter)

Scala では、クラスを定義するときには決められないような型を持つことができる。この型は仮の名前をつけておき、実際にクラスのインスタンスを作るときに決まるようにする。これを型パラメータと呼ぶ。型パラメータはたとえば、中 … 続きを読む

カテゴリー: Scala | コメントする

トレイトの継承の線形化

昨日と同じように、菱形継承問題を考える。 scala> trait TraitA { | def greet(): Unit | } defined trait TraitA scala> trait TraitB ex … 続きを読む

カテゴリー: Scala | コメントする

菱形継承問題

Scala のクラスは単一継承だけど、トレイトは複数継承できるので菱形継承問題が起きる。菱形継承問題というのは次のようなものだ。 greet メソッドを定義した TraitA と、それを継承してそれぞれ別の greet … 続きを読む

カテゴリー: Scala | コメントする

トレイト

聴きなれない単語が出てきた。トレイトというのは、Scala のオブジェクト指向プログラミングにおけるモジュール化の中心的な概念らしい。トレイトの特徴は次の3つだ。 1つのクラスやトレイトに複数のトレイトを継承(ミックスイ … 続きを読む

カテゴリー: Scala | コメントする

コンパニオンオブジェクト

同じファイル内において、クラスと同じ名前で定義されたシングルトンオブジェクトをコンパニオンオブジェクトと呼ぶ。コンパニオンオブジェクトは対応するクラスに対して特権的なアクセス権を持っていて、private なフィールドに … 続きを読む

カテゴリー: Scala | コメントする