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

ケースクラスによって自動生成されるもの

ケースクラス(case class )を宣言すると、ふつうのクラス(class)宣言に加えて、以下のものが追加で生成される。 プライマリコンストラクタ引数を公開する(クラス宣言の引数に val をつけたように動作する) … 続きを読む

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

変数宣言におけるパターンマッチング

パターンマッチングは match 式の中だけじゃなく、変数宣言においても使用できる。 例えばケースクラス Point があったとして scala> case class Point(x: Int, y: Int) def … 続きを読む

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

ケースクラスとパターンマッチング(2)

パターンマッチングの威力は、昨日見たような型による分岐にとどまらない。というのも各パターンは(ケースクラスがパラメータを持つならば)パラメータを持つこともできるからだ。これでほぼ Haskell のパターンマッチングと同 … 続きを読む

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

ケースクラスとパターンマッチング

ケースクラス(case class)は、Scala の強力なパターンマッチングのために必要なものらしい。普通のクラス(class)とどう違うのかよくわからないけど、パターンマッチングに使いたければケースクラスにしておけ、 … 続きを読む

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

セット

セット(Set)は集合を表すデータ構造だ。次のようにして作ることができる。 scala> val s = Set(1, 1, 2, 3, 3, 3, 4, 5) s: scala.collection.immutable … 続きを読む

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

マップ

マップ(Map)はいわゆる連想配列とか辞書とか呼ばれるデータ構造だ。 マップにはイミュータブルなマップと、ミュータブルなマップがある。なんで両方あるのかはわからない。 イミュータブルなマップ Scala で単に Map … 続きを読む

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

リストのメソッド(3)flatMap

flatMap は、二重のリストの内側のリストを map して、結果をフラットなリストにするメソッドだ。 Ruby で書くとこう。 irb(main):001:0> [[1,2,3], [4,5]].map{|x| x. … 続きを読む

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

リストのメソッド(2)

今日はリストの高階関数を中心に見ていこう。 foldLeftとfoldRight まずは畳み込み関数。foldLeft は左から、foldRight は右から畳み込む。 scala> List(1,2,3,4,5) … 続きを読む

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

リストのメソッド

今日からリスト(List)のメソッドを見ていく。 Nil Nil は空のリストを表す。Lisp みたいだな。 scala> Nil res0: scala.collection.immutable.Nil.type … 続きを読む

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

Range

Range は範囲を表すオブジェクトだ。to または until 演算子を使って作る。 scala> 1 to 5 res0: scala.collection.immutable.Range.Inclusive = R … 続きを読む

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