Seven Languages in Seven Weeks: Chapter 5. Scala: Day 1

Scalaオブジェクト指向周りについて(Day 2は関数型な部分について)

Scala Types

  • Scalaでは全てがオブジェクト。Primitivesはない
  • 強い型付け・型推論
  • ifに入れられるのはBooleanのみ。Nilは空リスト。

Loops

  • whileJavaとほぼ同じ
  • forfor(i <- range)という感じで書く
  • ついでに、Scalaでは何も書かないとデフォルトでpublicメソッドになる

Ranges and Tuples

  • untilはexclusive, toinclusive
  • ("Elvis", "Presley")という感じでタプルが作れる

Classes in Scala

  • class Person(firstName: String, lastName: String)で、コンストラクタを特に書かなくても値クラスができる
  • class宣言直下に書いたコードが"primary constructor"となる。別のコンストラクタを作りたければdef this(...) { }と書いて"auxiliary constructor"を定義すればよい

Extenging Classes

  • companion object
    • classの代わりにobjectキーワードを使うと、シングルトンクラスを定義できる
    • 同名のclass TrueRingobject TrueRingを定義することができる。この場合、objectの方は"companion object"となり、そこに定義されたメソッドはJavaでいうstatic methodと同様
  • 継承にはextendsを使う。ただしextends Person(name)のように、親クラスのコンストラクタのパラメータを全て指定する必要がある
  • Rubyのmixinに似たtraitを定義できる。
    • with SomeTraitなどと使う

Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages (Pragmatic Programmers)

Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages (Pragmatic Programmers)