Re: [Nemerle] Constraints для конструктора
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.01.07 17:25
Оценка: +1
Здравствуйте, chudo19, Вы писали:


C>public this[Host](h:Host) where Host:UserControl {...} неработает.

C>есть идеи ?

Это и в C# невозможно. Конструктор — это не совсем обычная фукнция. Он фактически превращается в инструкцию мсил-а. Так что если тебе нужно иметь еще один параметр типа при создании объекта, то сделай фабричный метод с параметром типа.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
[Nemerle] Constraints для конструктора
От: chudo19  
Дата: 15.01.07 12:44
Оценка:
public this[Host](h:Host) where Host:UserControl {...} неработает.
есть идеи ?

30.01.07 18:01: Перенесено модератором из 'Декларативное программирование' — IT
Re: [Nemerle] Constraints для конструктора
От: ie Россия http://ziez.blogspot.com/
Дата: 16.01.07 10:03
Оценка:
Здравствуйте, chudo19, Вы писали:

C>public this[Host](h:Host) where Host:UserControl {...} неработает.

C>есть идеи ?

Допустим было бы возможным, и как бы задание типа при спецификации конструктора отличалось бы от задания типа при спецификации класса?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Превратим окружающую нас среду в воскресенье.
Re[2]: [Nemerle] Constraints для конструктора
От: chudo19  
Дата: 16.01.07 11:39
Оценка:
Здравствуйте, ie, Вы писали:

ie>Допустим было бы возможным, и как бы задание типа при спецификации конструктора отличалось бы от задания типа при спецификации класса?


Что значит как бы отличалось ? В смысле для чего мне надо это ?
Re[3]: [Nemerle] Constraints для конструктора
От: ie Россия http://ziez.blogspot.com/
Дата: 16.01.07 11:49
Оценка:
Здравствуйте, chudo19, Вы писали:

ie>>Допустим было бы возможным, и как бы задание типа при спецификации конструктора отличалось бы от задания типа при спецификации класса?

C>Что значит как бы отличалось ?

Ну например,
class A[T] where T : IMyInterface
    public this[Host](h:Host) where Host:UserControl {...}

как создать объект такого класса?
def a : A[int][MyUserControl] //????


C>В смысле для чего мне надо это ?


Это тоже интересно. Почему параметризуется именно конструктор, а не класс?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Превратим окружающую нас среду в воскресенье.
Re[4]: [Nemerle] Constraints для конструктора
От: chudo19  
Дата: 16.01.07 12:05
Оценка:
Здравствуйте, ie, Вы писали:
ie>Ну например,
ie>
ie>class A[T] where T : IMyInterface
ie>    public this[Host](h:Host) where Host:UserControl {...}
ie>



ну а что тут такого , конструктор как любая другая функция может хотеть некий контракт который надо проверить статически
допустим where Host:UserControl,IMyBlabla ...

ie>как создать объект такого класса?

ie>
ie>def a : A[int][MyUserControl] //????
ie>


никак есесено , но это и не нужно, потому как Host не является мембером класса и не сохраняется ,

ie> Почему параметризуется именно конструктор, а не класс?

собсно ответил. патерн стратегия эдыкий
Re[5]: [Nemerle] Constraints для конструктора
От: ie Россия http://ziez.blogspot.com/
Дата: 16.01.07 12:48
Оценка:
Здравствуйте, chudo19, Вы писали:

ie>>Ну например,

ie>>
ie>>class A[T] where T : IMyInterface
ie>>    public this[Host](h:Host) where Host:UserControl {...}
ie>>


C>ну а что тут такого , конструктор как любая другая функция может хотеть некий контракт который надо проверить статически

C>допустим where Host:UserControl,IMyBlabla ...

Ну все же конструктор не любая функция Думаю Немерловцы тут скопировали C#.

ie>>как создать объект такого класса?

ie>>
ie>>def a : A[int][MyUserControl] //????
ie>>


C>никак есесено , но это и не нужно, потому как Host не является мембером класса и не сохраняется ,


Хммм... А зачем класс, который нельзя создать? Бог с ним с мембером класса, я имел ввиду хотя бы синтаксис.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Превратим окружающую нас среду в воскресенье.
Re[6]: [Nemerle] Constraints для конструктора
От: Klapaucius  
Дата: 16.01.07 13:32
Оценка:
Здравствуйте, ie, Вы писали:

ie>Хммм... А зачем класс, который нельзя создать? Бог с ним с мембером класса, я имел ввиду хотя бы синтаксис.


Может он хочет что-то такое?
interface IShooting
{
    Shot(o : object) : void
}

struct Shotgun : IShooting
{ ... }

FeloDeSe[S]() : where S : IShooting
{
    static sh : S = sh();
    
    Suicide() : void
    {
        sh.Shot(this);
    }
}

Просто стратегия, причем можно, вроде как, надеяться, что метод будет заинлайнен.
Но я совсем не уверен, что метод будет заинлайнен в случае параметризованного метода.
... << RSDN@Home 1.2.0 alpha rev. 655>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[7]: [Nemerle] Constraints для конструктора
От: chudo19  
Дата: 16.01.07 13:39
Оценка:
Здравствуйте, Klapaucius, Вы писали:

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


ie>>Хммм... А зачем класс, который нельзя создать? Бог с ним с мембером класса, я имел ввиду хотя бы синтаксис.


K>Может он хочет что-то такое?


Все что я хотел это параметризировать алгоритм конструктора и статически проверить это.
что тут особенного ?
Re[8]: [Nemerle] Constraints для конструктора
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.01.07 17:25
Оценка:
Здравствуйте, chudo19, Вы писали:

C>Все что я хотел это параметризировать алгоритм конструктора и статически проверить это.

C>что тут особенного ?

Создай отдельный статический метод (фабричный).

using System.Console;

class A
{
  obj : object;
  private this(x : object) { obj = x; }
  public static Create[T](x : T) : A { A(x) }
  public override ToString() : string { $"A.obj = $obj" }
}

module Program
{
  Main() : void
  {
    WriteLine(A.Create(1));
    WriteLine(A.Create("str"));
    _ = ReadLine();
  }
}
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.