Nemerle must die
От: Воронков Василий Россия  
Дата: 23.02.06 01:34
Оценка: -1 :))
Собственно, про def function_name. Это ведь синтаксис объявления локальных функций?
Например, такой код:

class Main
{
    public static Main() : void
    {    
        Console.WriteLine("Main");
    }
}

def Invoke() {
    Console.WriteLine("Invoke");
}


приводит к ошибке: more then one entry point (Main function) found in _N_AutoModule
Ну что ж, дело нехитрое. Меняем:

class Main
{
    public static Main2() : void
    {    
        Console.WriteLine("Main");
    }
}

def Invoke() {
    Console.WriteLine("Invoke");
}


Все спокойно компилируется. Но на консоль ничего не выводится. Причина в общем-то понятна — если есть код в глобальном скопе то немерле генерит для него родительский модуль и функцию Main. Хотя выглядит это как-то криво. Не говоря уж о том, что нужно иметь какое-то представление о химии компилятора, чтобы просто понять сообщение об ошибке.
В общем предлагаю пофлеймить на эту тему.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Nemerle must die
От: IT Россия linq2db.com
Дата: 23.02.06 02:13
Оценка: 1 (1) :)
Здравствуйте, Воронков Василий, Вы писали:

ВВ>
ВВ>class Main
ВВ>{
ВВ>    public static Main2() : void
ВВ>    {    
ВВ>        Console.WriteLine("Main");
ВВ>    }
ВВ>}

ВВ>def Invoke() {
ВВ>    Console.WriteLine("Invoke");
ВВ>}

Invoke();

ВВ>


ВВ>Все спокойно компилируется. Но на консоль ничего не выводится.


Ну так а кто же его вызывать будет? Объявление функции и её вызов — это разные вещи.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re: Nemerle must die
От: Кодёнок  
Дата: 23.02.06 08:53
Оценка: +1 :))) :)
Здравствуйте, Воронков Василий, Вы писали:

ВВ>class Main

ВВ>{
ВВ> public static Main2() : void
ВВ> {
ВВ> Console.WriteLine("Main");
ВВ> }
ВВ>}
ВВ>def Invoke() {
ВВ> Console.WriteLine("Invoke");
ВВ>}

ВВ>Все спокойно компилируется. Но на консоль ничего не выводится.


Не выводится, потому что ни одну из объявленных тобой функций никто не вызывает

ВВ>Причина в общем-то понятна


Видимо она заключается в том, что корпоративная вечеринка у вас уже в полном разгаре?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.