いわゆる静的型付けでオブジェクト指向な言語という点からみれば、ScalaもC#もJavaも似ている点があるわけですが、その中でJavaにはなくてしかしC# と Scala である程度共通するものを書きだしてみた。別に「この結果 = Javaがダメ」とかすぐに結論づけたいわけじゃなく、自分の頭の中整理してみたかっただけです。この3つを選んだのも自分がある程度使った経験があるというだけに過ぎません。ちなみにここで言ってるJavaはJava6で、C# は4.0で、Scalaは2.8以降です。あと「似ている機能」があるだけで細かいところ色々違いますが、そこは自分の基準でなんとなく「似ている」と感じたものと書いているだけなのであしからず(´・ω・`)
- 型推論( C# はローカル変数のみだけど ) http://ufcpp.net/study/csharp/sp3_var.html
- いわゆるラムダ式っていうか無名関数っていうかクロージャっていうやつ http://ufcpp.net/study/csharp/sp3_lambda.html
- ジェネリックの共変と反変とか型引数に対する制約とか *1
- オプション(デフォルト)引数
- 名前付き引数
- 演算子オーバーロード*2
- aliasをつける機能*3 http://ufcpp.net/study/csharp/sp_namespace.html#alias
- Stringのリテラルを複数行まとめて書けたり、エスケープが必要なくなる、ヒアドキュメントとか言われる構文*4
こんなものか・・・?思ったより少ないな・・・あとC#で、拡張メソッド使えば、Scala での Pimp my Library っぽいことできたりしますね。for式とLINQもある意味ちょっとだけ共通点あるような・・・
あとコレクションライブラリを比べてみたいな・・・