Ну как же он присутствует? Первый параметр ''. Обычно для аргумента функции это означает отсутствующее значение.потому что параметр присутствует
Да, конечно так можно. Но раньше у меня работал и мой вариант. Он выглядит проще и более компактный. Хотелось бы разобраться почему он сейчас не работает.Код:Test(Default, 2) Func Test($var1=Default, $var2=Default) If $var1 = Default Then $var1 = 3 If $var2 = Default Then $var2 = 5 MsgBox('', '', $var1) MsgBox('', '', $var2) EndFunc ;==>Test
Это пустая строка. И передается она в функцию как строка.Обычно для аргумента функции это означает отсутствующее значение.
Не отсутствующее, а пустое. Так проще реализовывать функциидля аргумента функции это означает отсутствующее значение
Func S($s = "")
If $s Then ConsoleWrite($s & @CRLF)
EndFunc
Func I($i = 0)
If $i Then ConsoleWrite($i & @CRLF)
EndFunc
А обновлялась ли версия Autoit - и какая у вас сейчас? На мой взгляд, в Autoit происходят изменения, которые в справке не всегда описываются... Кто-то мог послать авторам пример подобный вашему, посчитать это багом и это было исправлено., т.к. действительно данные передаются в виде пустой строки...Да, конечно так можно. Но раньше у меня работал и мой вариант
Можете привести пример?пришлось в 20-30 функциях вставлять Number() для ряда переменных, хотя раньше работало и без этого
К сожалению нет - я не виду учёт изменениям своих функций. В TCIMG своя UDF из 4000 функций, обычно при обновлении Autoit я прошу пользователей проверить свои команды и они отписываются что не так... Я исправляю или нахожу баги в функциях Autoit, которые передаю на оф. сайт или здесь спрашиваю - в течении месяца все ошибки находятся, последнюю я обновлял 17.10.2022, так что уже не помню, где исправлял.., но это не касалось родных функций Autoitпример?
3.3.16.1А обновлялась ли версия Autoit - и какая у вас сейчас?
Каким образом не указывать? Просто пропускать? , , Или так: ,"", ?Пропускать параметры нельзя, но можно не указывать остальные
Функция WinClose
WinClose("Untitled - Notepad", "")
В функцию передаются именно значения. И по наличию значений определяется количество параметров.проверяется присутствие переданного параметра (не значения параметра!)
Как раз в зависимости от значения. Это значение будет присвоено параметру независимо от значения по умолчанию.вне зависимости от значения переданного параметра
Пропускать нельзя. Но можно указать такое же, как по умолчанию. Или Default, если функция его обрабатывает.Просто пропускать? , , Или так: ,"", ?
Всё верно. Не пустая строка - это истина.при проверке переменной со значением "0" в условиях, получается True
Потому что это не запрещено. Хотите - ставите, хотите - нет.Зачем же тогда поставили "" ?
FileOpenDialog ("title", "ini dir", "filter" [, options = 0 [, "default name" [, hwnd ]]] )
Теперь вообще ничего не понятно. Выше же отмечали, что в случае "" дефолтное значение не будет использовано потому, что присутствует параметр. А теперь получается, что есть "", что нет - никакой разницы? В моем первом сообщении в коде показано, что между кавычками есть пробел ' '. На самом деле это не так. Я поставил '' (одинарные кавычки) но при загрузке на сайт это было показано по другому.Потому что это не запрещено. Хотите - ставите, хотите - нет.
Немного переделал вашу функцию.Код:Func I($i = 0) If $i Then ConsoleWrite($i & @CRLF) EndFunc
I(5, "", 9)
Func I($q, $i = 1, $t = 7)
ConsoleWrite($q & @CRLF & $i & @CRLF & $t & @CRLF)
EndFunc
>"C:\Program Files (x86)\AutoIt3\SciTE\..\AutoIt3.exe" "C:\Program Files (x86)\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.au3" /run /prod /ErrorStdOut /in "D:\Yandex\AutoIt\MyMsg\Test5.1.au3" /UserParams
5
9
>Exit code: 0 Time: 0.8279
В английской справке для функции WinClose написанополучается, что есть "", что нет - никакой разницы?
text | [optional] The text of the window to close. Default is an empty string. |
Всё правильно работает. Вы передали три значения: цифру пять, пустую строку, цифру девять. Значения параметров по умолчанию были заменены на переданные, что и выведено в консоль.Не работает
Ну а как в качестве второго параметра установить дефолтное значение?Вы передали три значения: цифру пять, пустую строку, цифру девять
Прописать его в явном виде, равным значению по умолчанию. Или обрабатывать Default.как в качестве второго параметра установить дефолтное значение?
I(5, 1, 9)
Тогда теряется всякий смысл дефолтности. Зачем она нужна, если все равно прописывать вручную??Прописать его в явном виде, равным значению по умолчанию.
Автор темы | Похожие темы | Форум | Ответы | Дата |
---|---|---|---|---|
N | Как передать аргументы в скрипт | Общие вопросы по AutoIt | 0 |
Похожие темы |
---|
Как передать аргументы в скрипт |