ИМХО, этот код должен или компилироваться или выдавать несколько другую ошибку:
public static Main() : void
{
def MyStringExtension(this instance : string) : string
{
"MyStringExtension : " + instance;
}
def a = "a";
a.MyStringExtension();
}
Сейчас объявление локального метода расширения компилятор проглатывает на ура, но заиспользовать метод не даёт. А было бы круто если бы ещё и давал, но можно чтобы и нормально ругался на this.
Здравствуйте, hi_octane, Вы писали:
_>Сейчас объявление локального метода расширения компилятор проглатывает на ура, но заиспользовать метод не даёт. А было бы круто если бы ещё и давал, но можно чтобы и нормально ругался на this.
Мне кажется, учитывая замыкания — это перебор. Но компилятор должен ругаться. Причем понятно и разумно.
... << RSDN@Home 1.2.0 alpha rev. 637>>
VD>Мне кажется, учитывая замыкания — это перебор. Но компилятор должен ругаться. Причем понятно и разумно.
Если сравнивать с обычной локальной функцией, то отличие у таких методов расширения похоже только в синтаксисе вызова, но и полезность их таких сомнительна.
Запостил в багтрэкер, как отфиксят так и будет:
http://nemerle.org/bugs/view.php?id=1057... << RSDN@Home 1.2.0 alpha rev. 0>>
Здравствуйте, hi_octane, Вы писали:
_>Запостил в багтрэкер, как отфиксят так и будет:
_>http://nemerle.org/bugs/view.php?id=1057
Хм. Отфиксят — это если просто добавят сообщение об ошибке. А вот реализация локальных фунций расширений — это уже "фича-реквест". Там надо не мало по вкалывать.
... << RSDN@Home 1.2.0 alpha rev. 637>>