Свойство Nemerle Extension - PullRequest
       19

Свойство Nemerle Extension

2 голосов
/ 12 декабря 2011

Недавно обсуждался вопрос о добавлении свойства расширения к языку 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;
  }
}

Примечание: модуль == статический класс

Что ты думаешь?

1 Ответ

0 голосов
/ 13 декабря 2011

Мне не нравится из-за дублирования:

  1. вы должны указать Type2 в двух точках,
  2. вы должны указать PropName в двух точках.

Так что рефакторинг может быть немного сложным.Как насчет следующего подхода?

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

или даже autoproperty:

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