Предложение по автопропертям
От: Ziaw Россия  
Дата: 25.11.10 15:37
Оценка:
Предлагаю расширить их синтаксис ключевыми словами getting setting setted(?) и дать доступ в них ко внутреннему полю

Будут доступны следующие паттерны
// lazy value (да, я в курсе, что есть обертки для этого)
public Value : string { getting {when (autofield == null) autofield = someLong} }

// notify 
public Value : string 
{
  get; 
  setting { when (autofield != value) fireValueChanging() }
  setted  { when (autofield != oldvalue) fireValueChanged() } 
}

// constraint
public Value : string 
{
  get; 
  setting 
  {
    match (value) 
    { 
      | "One" | "Two" => ()
      | _ => throw ArgumentException();
    }
  }
}


Чем не устраивает замена автосвойства на обычное: приходится открывать классу внутреннее поле, которое по ошибке может быть изменено в обход свойства.
Можно решить и макрами, но я не знаю как в них добраться до внутреннего поля и синтаксис получается не эстетичный.
Re: Предложение по автопропертям
От: hardcase Пират http://nemerle.org
Дата: 25.11.10 15:43
Оценка: 7 (1) +1
Здравствуйте, Ziaw, Вы писали:

Если уж так нужен доступ ко внутреннему полю, то почему бы от поля и не отталкиваться?
К тому же никто не мешает делать так:

public X : string
{
  mutable x : string;
  get { штоугодно с x }
  set { штоугодно с x }
}
/* иЗвиНите зА неРовнЫй поЧерК */
Re[2]: Предложение по автопропертям
От: Ziaw Россия  
Дата: 25.11.10 15:45
Оценка: +1
Здравствуйте, hardcase, Вы писали:

H>Если уж так нужен доступ ко внутреннему полю, то почему бы от поля и не отталкиваться?

H>К тому же никто не мешает делать так:

Не знал про фичу Тогда нет особой нужды в моем предложении.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.