1 (изменено: ВасилийП, 2017-01-24 18:36:10)

Тема: VBS: 2 функции с одинаковым именем

Это получилось случайно, но возник вопрос.

Есть vbs-скрипт, а в нём 2 функции с одинаковы именем, всегда выполняется "нижняя" функция.
Может кто-то встречал правила выполнения функций в скрипте?

Пример:


t1
WScript.Quit

Function t1
  WScript.Echo 1
End Function

Function t1
  WScript.Echo 2
End Function

В окне отладки будет выведено "2".
Если "нижнюю" функцию поднять выше первой t1, то будет выведено "1".

Вопрос - это документированная фича или баг, который они уберут в новой версии?

Проверял на WinXP SP3 32-бита.

Не дописал... Можно сделать 10 таких функций, всё равно будет срабатывать последняя.

2

Re: VBS: 2 функции с одинаковым именем

ВасилийП
Прочтите правила оформления до конца. Оформите заголовок и сообщение так, как положено (с расстановкой точек и т.п.).
До тех пор ответы запрещены.

3 (изменено: ВасилийП, 2017-01-24 18:47:16)

Re: VBS: 2 функции с одинаковым именем

Flasher
Двоеточие в названии темы добавил, точки в конце предложений поставил (теперь ответы косяком попрут smile).

4

Re: VBS: 2 функции с одинаковым именем

ВасилийП
Расставлять точки, как, впрочем, выполнять и другие обязательства, у нас полагается во всех сообщениях, а не только стартовом.

5

Re: VBS: 2 функции с одинаковым именем

Точку поставил.

Теперь буду знать, что перед заходом на Серый форум надо проштудировать справочник Розенталя.

6

Re: VBS: 2 функции с одинаковым именем

ВасилийП пишет:

Вопрос - это документированная фича или баг, который они уберут в новой версии?

А в чём тут баг? В том, что нет сообщения об ошибке?

7

Re: VBS: 2 функции с одинаковым именем

ВасилийП
3.3. Идеального литературного языка на форуме от Вас не требуют ...

По теме. Собственно, ответ на поверхности. Инициализация идёт в порядке следования - сверху вниз. В программировании не в правилах называть функции одинаково, в этом нет здравого смысла.

8 (изменено: ВасилийП, 2017-01-24 19:01:23)

Re: VBS: 2 функции с одинаковым именем

YMP
Я первый раз вижу, чтобы компилятор или интерпретатор игнорировали такое безобразие smile

Вот и интересуюсь - для ScriptHost'а это баг или фича?

9

Re: VBS: 2 функции с одинаковым именем

Flasher
Хочется узнать не ответ на поверхности (предположения у меня есть), а ответ из официальной документации (не нашёл).

10

Re: VBS: 2 функции с одинаковым именем

ВасилийП
Ну, у нас доступ к официальной документации аналогичный вашему, поэтому ждать, что кто-то другой полезет в поиск из-за такой по сути мелочи, полагаю, бестолку.
А что касаемо потенциальных обновлений, то про это уж точно можно забыть, особенно учитывая, как давно на VBS ничего толком не менялось, а с появлением PoSh, Edge и будущим отказом MS от IE тем более.

11 (изменено: YMP, 2017-01-24 20:06:17)

Re: VBS: 2 функции с одинаковым именем

ВасилийП пишет:

Я первый раз вижу, чтобы компилятор или интерпретатор игнорировали такое безобразие smile

Вот и интересуюсь - для ScriptHost'а это баг или фича?

Точнее, не для СкриптХоста, т.к. он всего лишь передаёт код скрипта соответствующему движку, а для этого движка. Судя по тому, что в JScript то же самое, это фича.

12

Re: VBS: 2 функции с одинаковым именем

Flasher пишет:

Ну, у нас доступ к официальной документации аналогичный вашему

Видел только описания функций VBS, а интересует описание работы интерпретатора, т.е. как он парсит текст скрипта (или что-то в этом роде). А такой информации нигде не нашёл sad
Если у вас есть ссылки на подобное описание, буду признателен.

13

Re: VBS: 2 функции с одинаковым именем

Господа, если кому не лень, проверьте этот эффект на Win8 и Win10 (нет таких нигде поблизости)

Если дополнить скрипт ещё одной строчкой, то скажите версию ScriptHost'а

WScript.Echo WScript.Version

Проверил на Win7, scripthost 5.8 - эффект есть

14

Re: VBS: 2 функции с одинаковым именем

YMP пишет:

Судя по тому, что в JScript то же самое, это фича.

Только непонятно, что делать с этой фичей smile

Обнаружил эти функции-дубликаты в довольно большом файле (около 50кб), и можно попасть в ситуацию, когда правишь "верхнюю" функцию, а никаких изменений в её работе не происходит, потому что выполняется "нижняя", которую не исправлял. Будешь ломать голову, танцевать с бубном, а мысль про дубликат, скорее всего и в голову не придёт sad

15

Re: VBS: 2 функции с одинаковым именем

Я на Вин10 проверял, версия 5.812. Да, зачем это может понадобиться, мне тоже не понятно. Лучше бы они подобные вещи запретили.

16

Re: VBS: 2 функции с одинаковым именем

ВасилийП
Повторно прошу не пренебрегать правилом, расставить точки в постах и впредь не нарушать. Смайлик точку также не заменяет.
И правило "Одна тема - один вопрос" у нас по-прежнему актуально.