Локальные функции расширения
От: _nn_ www.nemerleweb.com
Дата: 24.10.11 08:10
Оценка: +1
Это успешно компилируется.
module P
{
 public static Main() : void
 {       
  def MyStringExtension(this instance : string) : string
  {
    "MyStringExtension : " + instance;
  }
 }
}


Мне кажется, нужно запретить подобный код.
Есть другие соображения на этот счет ?
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: Локальные функции расширения
От: VladD2 Российская Империя www.nemerle.org
Дата: 24.10.11 08:21
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Мне кажется, нужно запретить подобный код.


Пока — да. Слишком много траха для реализации. Но на будущее может и реализуем данную фичу. В принципе прикольно ведь.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Локальные функции расширения
От: _nn_ www.nemerleweb.com
Дата: 24.10.11 08:32
Оценка:
Здравствуйте, VladD2, Вы писали:

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


__>>Мне кажется, нужно запретить подобный код.


VD>Пока — да. Слишком много траха для реализации. Но на будущее может и реализуем данную фичу. В принципе прикольно ведь.


Тогда и params запретить, т.к. он тоже игнорируется.
А также создает непредсказуемое поведение (из-за автоматического создания тупла):
def f(params x : array[int]) { x }
def g(params x) { x }

_ = f(1, 2, 3); // Ошибка
_ = g(1, 2, 3); // OK, typeof(x) == int * int * int ?!
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: Локальные функции расширения
От: BogdanMart Украина  
Дата: 26.10.11 22:53
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Мне кажется, нужно запретить подобный код.


Согласен! Нафиг нужно? )
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.