02.07.2013, 13:20 | #1 |
Участник
|
Функция внутри метода класса
Добрый день!
Есть метод уже существующего класса. В методе объявлена функция. Хочу добавить еще одну функцию. Вот пример: X++: #define.numberRow(18) public void run() { Name companyName, nameCustVend; str ss; // Это функция, которую я пытаюсь добавить Name getFactureNum() { Name ret; // Здесь тоже будет некий функционал return ret; } ; // Это уже имеющаяся функция Name getDocument() { Name ret; // Здесь некий функционал return ret; } ; // Здесь некие операторы метода, в частности вызывающие функцию getDocument() } Если я добавляю функцию getFactureNum(), то получаю ошибку "Переменная Name не была объявлена", которая указывает на строку с уже имевшейся ранее функцией getDocument(). В чем может быть проблема? Внутри метода нельзя объявить более одной функции? Спасибо. |
|
02.07.2013, 13:27 | #2 |
Axapta
|
Точку с запятой уберите после первой функции.
X++: #define.numberRow(18) public void run() { Name companyName, nameCustVend; str ss; // Это функция, которую я пытаюсь добавить Name getFactureNum() { Name ret; // Здесь тоже будет некий функционал return ret; } ; <----------- // Это уже имеющаяся функция Name getDocument() { Name ret; // Здесь некий функционал return ret; } ; // Здесь некие операторы метода, в частности вызывающие функцию getDocument() } |
|
|
За это сообщение автора поблагодарили: alex_zh (1). |
02.07.2013, 13:31 | #3 |
Участник
|
Спасибо :-) Все получилось!
Можно еще вопрос по синтаксису: После функции getDocument() есть точка с запятой[;], а почему после предыдущей функции не нужно? Особенности синтаксиса? |
|
02.07.2013, 13:40 | #4 |
Ищущий знания...
|
А почему не используете отдельные методы класса??? Они же как раз для этого и существуют!
Когда в одном методе класса куча подфункций (а по мне так хоть одна), такой код очень проблематично поддерживать...
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
02.07.2013, 13:43 | #5 |
Участник
|
Цитата:
Я только начинаю разбираться с Аксаптой - далеко не все Best Practices знаю. Учту Ваше замечание на будущее - спасибо. |
|
02.07.2013, 14:00 | #6 |
Участник
|
Вообще желательно методы разделять и вызывать где вам нужно.
А по поводу [;] - подфункции тоже считаются объявлением, поэтому вам необходимо объявить переменные метода, написать все необходимые вам функции и только потом ставить[;] |
|
02.07.2013, 14:19 | #7 |
Участник
|
Цитата:
То есть в случае ТС'а X++: #define.numberRow(18) public void run() { Name companyName, nameCustVend; str ss; // Это функция, которую я пытаюсь добавить Name getFactureNum() { Name ret; // Здесь тоже будет некий функционал return ret; } ; Name companyName, nameCustVend; str ss; // Это уже имеющаяся функция Name getDocument() { Name ret; // Здесь некий функционал return ret; } ; // Здесь некие операторы метода, в частности вызывающие функцию getDocument() } |
|
02.07.2013, 14:40 | #8 |
Участник
|
Во первых, Да, компилятор будет ругаться и не даст вам дважды объявить переменные, так как после первой ";" он считает объявление всех переменных законченным.
Во вторых, он не даст вам объявить разные переменные с одинаковыми именами внутри одного метода. Поэтому лучше поступить так, как вам предложили Lev и user_ax. |
|
02.07.2013, 14:44 | #9 |
Участник
|
Цитата:
Сообщение от NickMDAX
Во первых, Да, компилятор будет ругаться и не даст вам дважды объявить переменные, так как после первой ";" он считает объявление всех переменных законченным.
Во вторых, он не даст вам объявить разные переменные с одинаковыми именами внутри одного метода. Поэтому лучше поступить так, как вам предложили Lev и user_ax. |
|