「Scalaスケーラブルプログラミング」4章

所感

  • 理解
    • クラス内変数,メソッドにはself.とかなくアクセスできる
    • メソッド
      • メソッド引数は全てvalなので更新は不可
      • returnを省略すると一番最後に計算された値を返す
      • 宣言の仕方についてhttp://docs.scala-lang.org/style/declarations.html#methods
        • 返り値の型の省略は,Unitの場合と,ローカル関数の場合
        • 基本は{}は避けるが,手続きの場合{}をつけて書く
      • 等号を忘れると,返り値が自動でUnitになるので注意
    • メソッドが特殊記号だから検索が大変かも?
    • 行分割
      • javaの;は自動推定される
      • 複数行にまたがって書きたいなら,演算子を行末に置くか,かっこで囲む(または,行頭に許されない単語…覚えるの難しそう)
    • シングルトン
      • クラスに属するインスタンス全体で共有したい変数を定義したい場合
      • 名前が同じなら,companion objects,違ったらstand alone objects
    • ファイル名
    • アプリケーション
      • main関数を持つstand alone objectsを作成することで,実行可能なプログラムを作成できる
      • traitは後で詳しくということなので後で再確認
    • sbt
      • とりあえず,src/main/scalaの下において実行を確認
  • 分からなかった
    • 明示的にアクセス修飾子を指定しなければ,publicになると言われているが,一方で1章のクラス定義の例で,privateの例で何もつけられていない.
      • 実際,1章のMyClassの例でクラスを定義,インスタンスを作って変数にアクセスしようとしても出来ない
      • class ClassName(…) だとprivate, class ClassName {…} だとpublic?

つまづいた概念

  • 静的メンバ
    • インスタンスの中ではなく,クラスで共有され,更新される変数やメソッドのこと
    • main関数もそう
    • Scalaにはない