расширить свойство
От: Аноним  
Дата: 15.10.12 16:10
Оценка:
public k:int;
public i:int; req {k+1}; set; get;

при изенении k автоматически перевычисляется i.
Re: расширить свойство
От: catbert  
Дата: 15.10.12 16:19
Оценка:
Здравствуйте, Аноним, Вы писали:

А>при изенении k автоматически перевычисляется i.


а если і изменить?
Re[2]: расширить свойство
От: Аноним  
Дата: 15.10.12 16:30
Оценка:
Здравствуйте, catbert, Вы писали:

C>Здравствуйте, Аноним, Вы писали:


А>>при изенении k автоматически перевычисляется i.


C>а если і изменить?

если есть set то просто установиться значение. Если нет то и выполнить эту операцию нельзя
Re[3]: расширить свойство
От: catbert  
Дата: 15.10.12 19:26
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, catbert, Вы писали:


C>>Здравствуйте, Аноним, Вы писали:


А>>>при изенении k автоматически перевычисляется i.


C>>а если і изменить?

А>если есть set то просто установиться значение. Если нет то и выполнить эту операцию нельзя

Ага, то есть два случая.

1) Нету сеттера. Тогда задача решается штатными методами:
class Foo
{
    K : int { get; set; }
    I : int { get { K + 1} }
}


2) Есть сеттер. В этом случае I, я так понимаю, будет равно K + 1, пока ему не присвоят какое-то значение. Это довольно хитрая семантика, такое на практике случается наверное редко, поэтому в язык/стандартную библиотеку пихать его не имеет смысла.

В единичном случае, это должно выглядеть так:
class Foo
{
    K : int { get; set; }

    I : int { 
        mutable _value : int?
        get { _value ?? K + 1 } 
        set { _value = value }
    }
}

Естественно, если таких свойств много, можно и макрос написать соответствующий.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.