scalaパッケージ直下のものは、デフォルトで名前空間に入ってるので、重要だろう!(`・ω・´)
ということで、自分なりにまとめてみるテスト。
とりあえず知ってる限りの知識を書き出してみる。
解説になってないところとか、間違ってる可能性もあるので、全部信じないでください(´Д`)
- アノテーションのためのマーカー。中身はなし
- 継承して使う。mainが定義されてる。あとちょっとした隠し機能として、時間計れるれるようになってる。ただそれだけ。
初心者のうちしか使わない?っていうかこれ使うメリットあまり感じないんだけど
- Javaの配列に対応するクラス。
- なんだっけ?(爆)あとで調べよう
- classfileにつけるAnnotation?
- cloneableなクラス(コピー出来るという意味?)につけるアノテーション
- Console使うときのユーティリティっぽいメソッドが定義してあるobject?
- deprecatedらしいので、ほっとく
- Either自体は、sealed abstract。サブクラスにRightとLeftがあって、成功したらRight、失敗したらLeftを返すという使い方する。ゆろよろさんのエントリとか参考になる
- enum用。継承して、Valueってメソッド呼ぶことによってつかう。個人的にはちょっと使いづらい気がする。
余談だけど、scalaでJavaのEnumクラスって継承できちゃうんですね。継承しても大して使いやすくもないけど(´・ω・`)
- canEqualってメソッド定義してある。
See Programming in Scala, Chapter 28 for discussion and designって・・・(´・ω・`)
本持ってない人はどうするねん(゚Д゚)。簡単にいうと、親クラスと子クラスで、そもそもequalsで比べること自体が可能かどうかっていう問題があるから、 canEqualってメソッド実装して、比べること自体可能かどうかを返すようにしろってことらしい。scalaのライブラリではかなり多くのクラスがこのクラス継承してるみたい
- カリー化とかのユーティリティメソッド定義してあるけど、あまりつかったことないなぁ・・・。古くからあるみたいで、deprecatedが多いし。
- 関数オブジェクト。0から22は引数の数。mapやforeachとかの引数に、無名関数として渡したりとかすると、実態はこのクラスのインスタンスになってる。
実は直接明示的に継承することもできて、そうすると、いろいろ便利だったりする。
- collectionで、変更不可能表すための、マーカー。中身ないのになんでアノテーションじゃないんだろう?
- プリミティブ型をラップするため。暗黙変換のためで、直接使うことは殆ど無いと思う。
- パターンマッチが失敗した時に投げられるエラー
- 全部deprecatedだしwww
- 変更可能なcollectionのためのマーカー。Immutableとセットでversion2.8から導入されたらしい
- class自体がdeprecatedだから気にするな。
- nullにならないって示すマーカー?
- メソッドの戻り値とかで、成功したらSome(に成功した値を包んで)返す。失敗したら、Noneを返すって感じでつかう。
- パッケージオブジェクト。ほとんどエイリアスとか定義してあるだけ。
- Function1を継承してる。Mapとかが、このクラス継承してて、結構重要なクラスだと思う
- このクラスのメンバーは勝手にimportされる。超重要
- それぞれ、Tuple1からTuple22の親クラスになってる。
また、case class定義すると、自動的に、このクラス継承するようになってる。 その場合、ベースのコンストラクタの引数の数と、ProductNのNにあたる数が対応。 例えば、
case class Hoge(a:Int,b:String,c:String)って定義したら、Product3を自動で継承する
- プロキシつくる?あまり使ったことない、っていうか使い方しらない・・・orz
- アノテーション。コメントにremotableってあるけど、どういう意味?
- イマイチよくわからん(爆)
とりあえずユーティリティみたいだけど、あまり使ってるとこ見たことない
- scalaでclass定義すると、自動でこのクラス継承。メソッドは特にないけど、将来何か追加する予定でもあるのかな?
- アノテーションのための基本クラス。
- シンボル表すクラス。もちろん、finalでコンストラクタはprivateなので明示的にインスタンス化できない。
クオート使って、リテラルとしてコード打つと、コンパイラが勝手にSymbolクラスのインスタンス生成。
個人的には、Stringでよくね?って場面の方が多いので、あまり使ってない
- 言わずと知れた(?)、なくてはならない(?)、一度使って慣れたら便利すぎて、Javaになんでないんだよ(゚Д゚)!!!とか思う。
ところでFunctionもそうだけど、なぜ22までなのか?その昔は9までだったらしいけど。まぁどうでもいいか。そんなに多いの使わないし。
- アノテーション。使ったことない、使い方知らない・・・orz
- アノテーション。たぶんmatch式の警告とか抑止するため
- エラー。まあ名前からして、初期化されてない? or できない? こと表すんだろう。
- 同上