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なんて使ったことがないのでわからないなぁ?いつか調べよう.


今日は短いけれど,このへんにしときます.