Nemerle for OOP Programmers Week 1 (1)
ここからはちょっとずつやります.
クラス定義
クラス定義するときは,classキーワードを使う
class MyClass { // something inside }
はい,問題なしです.
修飾子
大きく3種類ありまして,
- アクセス修飾子(public/internal/private/protected/protected internal)
- エンティティのセマンティクスを変更する修飾子(static/mutable/volatile/extern/partial)
- virtualメソッドやname hidingを制御する修飾子(new/virtual/override/abstract/sealed)
mutableとnewを除けば,C#と同じみたいですね.
[mutable]
フィールドのみ有効.コンストラクタ以外のメソッドにより更新可能なものに付けます.C#のreadonlyとはまったく逆の指定になります.つまりNemerleではフィールドのデフォルトはimmutableだってことですね.で,基本的にはmutableは使わないほうがよいらしい?フィールドはprivateがデフォルトであるように,publicフィールドは敬遠されるように,mutableにはなるべくしないようにと.なんだかすごく不便な気もしますが,Nemerleってそういうものらしいです.
[new]
ネスト型を除く全てのエンティティで有効で.親クラスで定義されている同名のメンバーを隠す働きがあります.C#だとたしかメソッドに関してはnewが使えましたが,フィールド/プロパティにも使えましたっけ?というより,そもそもnewなんて使ったことがないのでわからないなぁ?いつか調べよう.
今日は短いけれど,このへんにしときます.