this в Nemerle
От: hardcase Пират http://nemerle.org
Дата: 04.03.11 08:51
Оценка: 95 (7)
Я думаю не многие знают в каких местах можно применять this (намекаю на пункт 4):

  1. это ссылка на текущий объект (Me в VB, Self в Delphi)
    class Foo
    {
      public DoIt() : int { this.GetHashcode() }
    }


  2. это имя конструктора
    class Foo
    {
      public this() { Console.WriteLine("Hi from constructor!") }
    }


  3. это макрос объявления метода расширения, он может применяться только к первому аргументу статического метода:
    module Foo
    {
      public SomeUsable(this x : array[int], y : string) : object { ... }
    }


  4. А еще это алиас типа которому принадлежит объявление (удобно использовать в макросах):
    class Foo
    {
      public Equals(other : this) : bool { ... }
    }

    В примере this будет алиасом к Foo. Аналогичное поведение в случае, когда this применяется для уточнения типа:
    def f : this = ....

1) Что я упустил?
2) Дополним и выложим в вику?
/* иЗвиНите зА неРовнЫй поЧерК */
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.