2

最近、Nemerle言語に拡張プロパティを追加することについての議論がありました。しかし、構文は不明確です。

提案された構文を更新しました:

module MExtension
{
  [ExtensionProperty(string)] public StringProp : int    { get; set; } 
  [ExtensionProperty(int)]    public IntProp    : string { get { "abc" } }
}

module MTest
{
  F() : void
  {
    def x : int = "ab".StringProp;
    "abc".StringProp = 100;

    def y : string = 10.IntProp;
  }
}

注:モジュール==静的クラス

どう思いますか ?

4

1 に答える 1

0

重複しているので気に入らない:

  1. Type2は2つのポイントで指定する必要があります。
  2. PropNameは2つのポイントで指定する必要があります。

したがって、リファクタリングは少し複雑になる可能性があります。次のアプローチはどうですか?

module MExtension
{
  property PropName(this arg : Type1) : Type2
  {
    get
    {
      ...
    }
    set
    {
      ... = value
    }
  }
}

または自動プロパティ:

module MExtension
{
  property PropName(this arg : Type1) : Type2 { get; set; }
}
于 2011-12-13T08:54:39.653 に答える