Open15
Tour of Scala を読む


書いてある単語がわからんすぎる。リンクされてるから今後出てくると思うけど。
わからん単語集
- トレイト
- サブクラス化
- 多重継承
- ミックスイン
- 関数型
- 合成機構
- 高階関数
- カリー化
- ケースクラス
- パターンマッチング
- シングルトンオブジェクト
- 抽出子オブジェクト
- 右無視シーケンスパターン
- For 内包表記
- ジェネリッククラス
- 変位指定アノテーション
- 上限と下限型境界
- 内部クラス
- 抽象型メンバー
- 複合型
- 自己参照
- 暗黙パラメータ
- 暗黙の返還
- ポリモーフィックメソッド
- 文字列補完
- メタプログラミング
- マクロ
- SAMs
- ラムダ
- アノテーション
- ジェネリクス
いまは分からなくて良いと思うので、最初はわからなかったことを覚えておくためにメモ。

とにかく、 Java と互換性がある関数型言語で、静的型付けができることはわかった。


Scala をブラウザで動かせる REPL がある

式
- 値(=定数)
- 変数
ブロック
JSと考え方は同じ。最後の式の結果が返り値になる
関数
これは式。返り値の型を指定できない。ブロックを持てない
メソッド
関数っぽいが式ではない。ブロックを持てる
Gemini 曰く、メソッドはクラスやオブジェクトの一部であり、関数は FunctionN トレイトを実装したオブジェクトらしい(?)
クラス
いわゆるクラス。
返り値の型 Unit はいわゆる void みたいな意味らしい。
ケースクラス
デフォルトで不変なクラス。 new なしでインスタンス化できて、値として比較できる
オブジェクト
それ自体が定義である単一のインスタンス(?)。そのクスのシングルトンと考えることもできる(?)。
シングルトンなクラスのインスタンスであると考えたら JS でもやったことある。
トレイト
トレイトは型。複数のトレイトを結合することも出来るし、継承することもオーバーライドすることも出来る。
TypeScript での interface みたいに見える
メインメソッド
プログラムの始点として必要。


- クラスは AnyRef のサブクラスなので、 AnyRef のメソッドは override def で上書きできる
- コンストラクタは引数名を指定して順序を無視できる
- クラスのメンバーはデフォルトおでパブリック、 private アクセス修飾子が使える